摘要:
4*4=16 最终全部的状态的2的16次方=65536 暴力枚举所有方案,从方案里找到一个原始状态一摸一样的方案,对比一下求出最小步数; #include<cstring> #include<iostream> #include<algorithm> using namespace std; typ 阅读全文
摘要:
第一个难点:如何枚举第一行的操作(指数类型的枚举,可以使用第一题的指数型枚举) 这里使用二进制类型枚举 1 1 0 1 0 = 26 反过来任何一个整数0-65536 也可以用二进制表示 第一行有5个数,2的5次方等于32 0-31 代表每一种方案; 怎样看第i位是不是1; i>>k & 1 第二个 阅读全文
摘要:
// 转换为目标状态 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=110; char start[N]; //初始状态 char aim[N]; // 目标状态 i 阅读全文
摘要:
怎样使用二分来做; 看题目是否具有二段性 或者单调性; 单调性属于二段性; 怎样看单调性: 初始时E0 数学归纳法推出:Ei撇 都是大于Ei的 达到某一个值就一定能够成功,等于maxh;return true; 防止中间过程爆int #include<iostream> #include<cstri 阅读全文
摘要:
// 递推 // 数列 0 1 1 2 3 5 8 13 21 ... 被称为斐波纳契数列 #include<iostream> #include<cstring> using namespace std; const int N=50; int n; int f[N]; int main(){ c 阅读全文
摘要:
题目条件: 枚举全排列,是9个数 a,b,c的位数都还不知道 枚举a,b,c的位数,枚举a和b的位数 ,c=9-a-b 判断等式是否成立 // 暴力dfs #include<iostream> #include<cstring> #include<algorithm> using namespace 阅读全文
摘要:
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=30; // 多开几个,防止边界越界 int n,m; int way[N]; // 表示方案 // u 代表当前枚举的 阅读全文
摘要:
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; const int N=10; int n; int path[N]; // 0表示没有放数, 1-n表示放的 阅读全文
摘要:
题解1: // 指数型枚举 // 题意是给出得数字都有两种选择,选或者不选 // 画出递归树理解题意 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=16; int n 阅读全文
摘要:
994. 腐烂的橘子 来自 <https://leetcode.cn/problems/rotting-oranges/> class Solution { public: // bfs int orangesRotting(vector<vector<int>>& grid) { int dx[4 阅读全文