
蓝桥杯——递归与递推
会笑的小熊
在努力,在进步
展开
-
费解的开关
思路:1.按的顺序可以任意2.每个格子只按一次3.每一行开关的操作完全被前一行的灯的亮灭状态决定(第一行决定后面的操作),最后一行灯的状态无法改变如何枚举第一行操作:1.指数类型枚举2.位运算:i的第k位是否是1——i>>k&1如何实现turn(x,y)函数利用偏移量:把当前数定为原点——左(-1,0),右(1,0),下(0,-1),上(0,1),不变(0,0)题目:你玩过“拉灯”游戏吗?25盏灯排成一个5×5的方形。每一个灯都有一个...原创 2022-03-17 13:02:29 · 4376 阅读 · 0 评论 -
翻硬币【蓝桥第四届】
题目类型:初始状态变到目标状态需要几步 ——宽搜bfs(状态数不是很大的情况下)题目:代码:#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 110;int n;char start[N], aim[N]; //开始状态和目标状态void turn(int i){ if (start[i] =原创 2022-03-17 11:26:47 · 212 阅读 · 0 评论 -
递归实现组合型枚举
题目:代码:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 30;int n, m;int way[N]; //way[]表示方案void dfs(int u, int start) //u表示当前位置,start当前最小可以从哪个数枚举{..原创 2022-03-17 11:04:12 · 866 阅读 · 0 评论 -
简单斐波那契
题目:代码:#include<iostream>#include<cstring>using namespace std;int main(){ int n,a=0,b=1; cin>>n; for(int i=0;i<n;i++){ cout<<a<<' '; int fn=a+b; a=b,b=fn; } return 0;}原创 2022-03-17 10:17:42 · 98 阅读 · 0 评论 -
递归实现排列型枚举
题目:代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int N=10;int n,s[N]; //s[]表示当前数的状态,0表示还没放数,1~n表示放了哪个数bool u[N]; //u[]表示数是否被用过,true表示用过,false 表示还未用过void d(int原创 2022-03-17 10:13:34 · 359 阅读 · 0 评论 -
递归实现指数型枚举
每个数选与不选都有两种,时间复杂度O(2^n)题目:代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int N=16;int n,s[N]; //s[]表示每个位置的状态 0表示还没考虑,1表示选,2表示不选void d(int x){ if(x>n原创 2022-03-17 09:08:00 · 168 阅读 · 0 评论