
BFS和DFS
圣帝天龙
菜!刷题啊!刷题不会,看题解啊!看题解看不懂,那就只能唱凉凉了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ2251
这是BFS搜索题目,题号是POJ2251,注意应该使用BFS,否则使用DFS容易超时或run time error以下是AC代码:#include<iostream>#include<cstring>using namespace std;//节点的信息struct node{ int x; int y; int z; i...原创 2018-07-24 10:25:21 · 493 阅读 · 0 评论 -
POJ1088(动态规划+搜索)
题目链接:https://vjudge.net/contest/49759#problem/E//#include<bits/stdc++.h>#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn = 1e2+10...原创 2019-02-21 21:31:38 · 290 阅读 · 0 评论 -
SDNU1241北望村八卦阵
提交的两次重要错误:1.标记问题,访问完成后没有及时标记,造成TLE2.输出格式问题,没有输出IMPOSSIBLE #include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#includ...原创 2018-12-20 09:56:40 · 232 阅读 · 0 评论 -
HDU1010(DFS遍历所有情况+奇数偶数剪枝)
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=10;bool vis[maxn][maxn];char mapp[maxn][m...原创 2018-10-23 22:01:34 · 287 阅读 · 0 评论 -
UVALive7672
这道题目如果每一次都广搜一次会超时。先打表就可以了。思路是定义数组step[maxn][5][5];数组元素step[n][i][j]表示在i步增加操作和j步双倍操作后对于"12345"转换到数字n的最小步数,打表形成可能的所有数字变换的情况。经验:利用打表的思想可以大大减少时间复杂度。#include<iostream>#include<cstdio>#in...原创 2018-08-19 21:28:05 · 296 阅读 · 0 评论 -
POJ1321棋盘问题
DFS搜索题目,题号是POJ1321下面是AC代码#include<iostream>#include<cstring>using namespace std;int n,k;char mapp[9][9];int vis[9];//访问标记数组,标记这一列是否被访问(棋子占用)int cnt;//方案数目void dfs(int s,int m)/...原创 2018-07-23 15:32:54 · 131 阅读 · 0 评论 -
POJ3278
/**题目大意:农场主约翰得知了一头逃跑的母牛的行踪,想立即抓住她。他从一个点开始,N(0≤N≤100000)在数轴上,牛点K(0≤K≤100000)在同一数轴。农夫约翰有两种交通方式:走路和传送。*行走:FJ可以在一分钟内从任意点X移动到点X - 1或X + 1*传送:FJ可以从任何点X点2×X在一分钟。如果这头牛没有意识到它的追猎,它一点也不动,农夫约翰需要多长时间才能把它找...原创 2018-07-24 09:37:57 · 438 阅读 · 0 评论 -
HDU2612
本题的陷井在于:1.Y不能走M的位置并且M不能走Y的位置 2.每个@必须被Y和M分别访问一次才能是正确的时间值#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;c...原创 2018-08-01 15:55:27 · 452 阅读 · 0 评论 -
HDU1495(非常可乐,BFS倒水做法)
注意倒水的函数:AC代码如下: #include<iostream>#include<queue>#include<cstring>using namespace std;int N,M,S;struct node{ int s; int m; int n; int num;//表示已经倒完可乐的次数};//一...原创 2018-08-01 11:12:49 · 716 阅读 · 0 评论 -
HDU1241
深搜:AC代码: #include<iostream>#include<cstring>using namespace std;const int maxn=105;char mapp[maxn][maxn];int vis[maxn][maxn];int n,m;int dir[8][2]= {{1,0},{-1,0},{0,1},{0,-1},{-1...原创 2018-08-01 09:34:07 · 287 阅读 · 0 评论 -
POJ3984
回溯原来的节点用到两个栈:第一个栈用来将队列中的结点按照入队顺序压入栈,(0,0)节点首先被压入栈.第二个栈用来记录路径,将第一个栈的栈顶元素依次[根据是不是路径上的节点]压入第二个栈,(0,0)此时在第二个栈的顶端最后,将第二个栈里的元素依次弹出就是结果 #include<iostream>#include<stack>//用来压入父节点#includ...原创 2018-07-31 20:30:42 · 413 阅读 · 0 评论 -
FZU2150
本题目是双起点BFS,第一次做,和一个起点的BFS差不多,只是需要将开始两个起点时间全赋值为0就可以 值得借鉴处理时间的方法:用初始化为无穷的数组记录节点时间,并且起到标志数组的作用#include<iostream>#include<cstring>#include<queue>#include<algorithm>using...原创 2018-07-31 10:49:24 · 391 阅读 · 0 评论 -
POJ3414桶装水
本题的特点在于父节点的回溯: #include<iostream>#include<stack>#include<algorithm>#include<cstring>//回溯父节点可能需要栈using namespace std;const int maxn=10005;struct node{ int a;//当前...原创 2018-07-30 19:40:56 · 269 阅读 · 0 评论 -
POJ3126素数路径
注意素数的判断算法不要马虎写错BFS,AC代码如下:#include<iostream>#include<cstring>using namespace std;int vis[10000];//判断节点是否入队过struct node{ int parent;//为了寻找路径debug设置的父节点 int x; int num;//...原创 2018-07-27 14:40:46 · 326 阅读 · 0 评论 -
POJ3087
开始时使用的char数组做的,不知道为什么没有AC,用stringAC了 #include<iostream>#include<queue>#include<string>using namespace std;int t,n;//n是字符串长度int k,minx;int main(){ cin>>t; k=1;...原创 2018-07-30 16:01:10 · 212 阅读 · 0 评论 -
POJ1426
深搜,注意搜索深度的限制,19是可行的深度:AC代码如下: #include<iostream>#include<cstdio>using namespace std;int n;int flag;//深搜结束的标志long long m;void dfs(long long t,int k){if(flag)return;if(k==19)re...原创 2018-07-26 19:56:33 · 386 阅读 · 0 评论 -
POJ3279
黑白翻转的问题,值得借鉴的是:1.使用左移+按位与运算的方法保留二进制相应位置的数字2.memcpy函数的使用,用于数组的复制3.使用0x3f3f3f3f表示无穷大 #include<iostream>#include<cstring>#include<string>//数组复制函数using namespace std;int map...原创 2018-07-26 16:52:24 · 505 阅读 · 0 评论 -
SDNU1025马踏飞燕
再一次做,出现两个错误,一个是使用BFS时,在添加新节点的时候队列尾指针qq+1忘记了//这种错误容易在测试样例过程中发现另一个是棋盘的范围问题:按照题意,棋盘应当包括边界坐标为0和100的直线//这种错误不容易被察觉,应当记住这种类型的错误AC代码如下:#include<iostream>#include<cstring>using names...原创 2018-07-26 10:15:33 · 363 阅读 · 0 评论 -
HDU4678(SG函数博弈+DFS求解结点个数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4678题目大意:在N*M的方格中,有K个旗子,每个方格记录周围8个方格中旗子个数的数目。0代表空方格。两个玩家轮流进行三个操作:点击空格方格,空格方格消失并且每个空方格连接的数字方格也消失点击数字方格,数字方格消失如果点击到旗子方格,游戏结束,胜负可以判定问:两个玩家都采取最优策...原创 2019-03-26 23:33:25 · 285 阅读 · 0 评论