【蓝桥杯每日一题】递推算法
🍎 博客主页:🌙@披星戴月的贾维斯
🍎 欢迎关注:👍点赞🍃收藏🔥留言
🍇系列专栏:🌙 蓝桥杯
🌙我与杀戮之中绽放,亦如黎明的花朵🌙
🍉一起加油,去追寻、去成为更好的自己!
蓝桥杯倒计时 39天
文章目录
- 🍎、递推
- 🍎、例题分析
- 🍇、(AcWing)砖块
- 🍇、(AcWing)翻硬币
- 🍇、(AcWing)费解的开关
- 🍎、总结
提示:以下是本篇文章正文内容,下面案例可供参考
🍎、递推
🍉、递推的简单定义
递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。
🍉、递推问题分析的四个步骤
1、确定递推变量
2、建立递推关系
3、确定初始(边界)条件
4、对递推过程进行控制
🍉、递推改变一个位置的通用模板函数
void turn(char &c)
{if(c == 'W') c = 'B'; //这个状态需要根据每一题题目具体分析else c = 'W';
}
对递归结果和测试用例的看法:有时候我们的答案和样例会不一样,这是很正常的,我们只要输出一个正确的答案就ok了。
🍎、例题分析
🍇、(AcWing)砖块
本题链接: 砖块


代码示例:
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
const int N = 203;
int t, n;
string str;
void update(char &c)
{if(c == 'W') c = 'B';else c = 'W';
}
bool cheak(char c)
{vector<int> res; // 存所有的方案string s = str; //设置s字符串拷贝原strfor(int i = 0; i + 1 < n; i++){if(s[i] != c){update(s[i]);update(s[i + 1]);res.push_back(i);//说明那个位置要被操作一下,要把这个方案记录到res里}}if(s.back() != c) return false;cout << res.size() << endl;for(int x : res) cout << x + 1 << " ";if(res.size()) cout << endl; // 如果方案数为0,直接输出一个回车return true;
}
int main ()
{cin >> t;while(t --){cin >> n >> str;if(!cheak('W') && !cheak('B')) puts("-1");}return 0;
}
🍇、(AcWing)翻硬币
本题链接: 翻硬币

分析解题思路:

代码示例:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;string a, b;
void turn(char &c)
{if(c == 'o') c = '*';else c = 'o';
}
int main ()
{cin >> a >> b;int res = 0;for(int i = 0; i + 1< a.size(); i++ ){if(a[i] != b[i]){turn(a[i]);turn(a[i + 1]);res++;}}cout << res << endl;return 0;
}
🍇、(AcWing)费解的开关
本题链接: 费解的开关


解题分析:
代码示例:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;const int INF = 1000000;
const int N = 6;
char g[N][N], backcup[N][N];
int dx[5] = { 0, -1, 0, 1, 0}, dy[5] = { 0, 0, 1, 0, -1};
void turn(int x, int y)
{for(int i = 0; i < 5; i++){int a = dx[i] + x, b = dy[i] + y;if(a >= 0 && a < 5 && b >= 0 && b < 5){g[a][b] ^= 1;}}
}
int work()
{int ans = INF;for(int k = 0 ; k < 32; k++) //k从0枚举到32,是枚举每个位置对应的状态,是不是turn过{int res = 0; // 当前方案操作数的最小值char backcup[N][N];memcpy(backcup, g, sizeof g);for(int j = 0; j < 5; j++)//针对第一层的操作if(k >> j & 1) //位运算{res ++;turn(0, j);}for(int i = 0; i < 4; i++)for(int j = 0; j < 5; j++)if(g[i][j] == '0'){res++;turn(i + 1, j);}bool is_successful = true;for(int j = 0; j < 5; j++)if(g[4][j] == '0'){is_successful = false;break;}if(is_successful) ans = min(ans, res); memcpy(g, backcup, sizeof g);}if(ans > 6) ans = -1;return ans;}int main ()
{int T;cin >> T;while(T--){for(int i = 0; i < 5; i++) cin >> g[i];cout << work() << endl;}return 0;
}
🍎、总结
本文简要介绍了递推算法的简要概念和几道递推算法的经典例题,希望大家读后能有所收获!
相关文章:
【蓝桥杯每日一题】递推算法
🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙我与杀戮之中绽放,亦如黎明的花…...
Unity性能优化: 性能优化之内存篇
前言 本文和传统的内存优化不一样,不是讲如何降低内存占用,而是讲编程开发中要注意的内存问题以及一些内存技术的演变与原理。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀 1: Application进程…...
华为OD机试题,用 Java 解【内存资源分配】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
微服务之Nacos注册与配置
🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 …...
Android 动画详解
Android动画的分类与使用学习Android必不可少的就是动画的使用了,在Android版本迭代的过程中,出现了很多动画框架,这里做一个总结。Android动画类型分类逐帧动画【Frame Animation】,即顺序播放事先准备的图片。补间动画【Tween A…...
Linux -- 程序 进程 线程 概念引入
程序与进程 :程序 :什么是程序 ???伪官方 : 二进制文件,文件存储在磁盘中,例如 /usr/bin 目录下 。 是静态。 简单讲 :# 我们都学习了语言,比如下面这串代…...
Android ART dex2oat
一、什么是dex2oat Dex2oat (dalvik excutable file to optimized art file) ,是一个对 dex 文件进行编译优化的程序,在我们的 Android 手机中的位置是 /system/bin/dex2oat,对应的源码路径为 android/art/dex2oat/dex2oat.cc,通…...
「RISC-V Arch」RISC-V 规范结构
日期:20230228 规范分类 根据 RISC-V 设计哲学,其规范文档也是高度模块化的: ISA 规范(2 篇) 非特权规范特权规范 非 ISA 规范(6篇) Trace规范ABI 规范外部调试规范PLIC 规范SBI 规范UEFI 协…...
【C】线程控制
创建线程 #include <pthread.h>int pthread_create(pthread_t * thread,const pthread_attr_t * attr,void *(*start_routine)(void*), void * arg);返回值:成功返回0,失败返回错误号。 thread:成功返回后,新创建的线程的…...
Maven工程打jar包的N种方式
Maven工程打jar包 一、IDEA自带打包插件二、maven插件打包2.1 制作瘦包(直接打包,不打包依赖包)2.2 制作瘦包和依赖包(相互分离)2.3 制作胖包(项目依赖包和项目打为一个包)2.4 制作胖包…...
一文了解GPU并行计算CUDA
了解GPU并行计算CUDA一、CUDA和GPU简介二、GPU工作原理与结构2.1、基础GPU架构2.2、GPU编程模型2.3、软件和硬件的对应关系三、GPU应用领域四、GPUCPU异构计算五、MPI与CUDA的区别一、CUDA和GPU简介 CUDA(Compute Unified Device Architecture)…...
全网资料最全Java数据结构与算法(1)
一、数据结构和算法概述 1.1什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话: 数据结构就是把数据元素按照一定的关系组织起来的集合&a…...
【项目实战】SpringMVC拦截器HandlerInterceptor入门介绍
一、拦截器介绍 拦截器是应用程序级框架中常用的拦截用户请求、实施业务流程控制的模式,它可以将一些公共的、重复发生的业务逻辑从业务处理代码中独立出来,使系统的结构更加清晰,程序的复杂度也减小了。 拦截器是一个常见的特性,它可以实现任何自定义功能,而无需调整业…...
阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜也躲不过的魔鬼面试,看的我心服口服
阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜跳槽了,这不是关键。 她参加了网易有道明星语音录音员/代言人的面试,这也不是关键。 关键是她教科书式的面试过程,狠狠地给我们上了一课。 我是无意间刷到的这个视频的时候,就一…...
深度学习笔记:不同的反向传播迭代方法
1 随机梯度下降法SGD 随机梯度下降法每次迭代取梯度下降最大的方向更新。这一方法实现简单,但是在很多函数中,梯度下降的方向不一定指向函数最低点,这使得梯度下降呈现“之”字形,其效率较低 class SGD:"""随机…...
ElasticSearch 学习笔记总结(三)
文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、…...
深入理解border以及应用
深入border属性以及应用👏👏 border这个属性在开发过程中很常用,常常用它来作为边界的。但是大家真的了解border吗?以及它的形状是什么样子的。 我们先来看这样一段代码:👏 <!--* Author: syk 185901…...
如何复现论文?什么是论文复现?
参考资料: 学习篇—顶会Paper复现方法 - 知乎 如何读论文?复现代码?_复现代码是什么意思 - CSDN 我是如何复现我人生的第一篇论文的 - 知乎 在我看来,论文复现应该有一个大前提和分为两个层次。 大前提是你要清楚地懂得自己要…...
22.2.28打卡 Codeforces Round #851 (Div. 2) A~C
A题 One and Two 题面翻译 题目描述 给你一个数列 a1,a2,…,ana_1, a_2, \ldots, a_na1,a2,…,an . 数列中的每一个数的值要么是 111 要么是 222 . 找到一个最小的正整数 kkk,使之满足: 1≤k≤n−11 \leq k \leq n-11≤k≤n−1 , anda1⋅a2⋅……...
Learining C++ No.12【vector】
引言: 北京时间:2023/2/27/11:42,高数考试还在进行中,我充分意识到了学校的不高级,因为题目真的没什么意思,虽然挺平易近人,但是……,考试期间时间比较放松,所以不能耽误…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
