随笔分类 -  DFS / BFS

HDU1755
摘要:这道题直接暴力枚举复杂度为 n!*m但是k 2 #include 3 #include 4 5 using namespace std; 6 7 int vis[10] , n , m , x , k , num[10] , dp[102][102]; 8 const int INF = 1... 阅读全文
posted @ 2014-10-29 22:41 Love风吟 阅读(210) 评论(0) 推荐(0)
POJ 1321
摘要:dfs 简单题 1 #include 2 #include 3 #include 4 using namespace std; 5 int vis[9][9]; 6 int mat[9][9],n,k,ans; 7 8 void dfs(int x,int y,int t) 9 {10 ... 阅读全文
posted @ 2014-10-24 11:22 Love风吟 阅读(163) 评论(0) 推荐(0)
CSU 1259 bfs找最短路
摘要:题目大意:不想介绍,题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1259bfs求最短路。这里因为2-9,到达同样的点不计步数,那我们不能每次bfs都遍历一个图找到所有相同的点,所以这里用vector[10],保存对应的2-9的相同的节点... 阅读全文
posted @ 2014-10-23 18:07 Love风吟 阅读(190) 评论(0) 推荐(0)
HDU 4478 Where is King
摘要:题目大意:一个王可以向周围8个方格走,如果都不通留在原地,t秒后,他可能存在的位置数这题数据量过大,我们需要通过奇偶性判断,如果t = 0可以到达,说明 t=2,4,6.。。。都可以到达所以我这用dp[N][N][2] 来记录x,y位置上奇数和偶数时间分别到达那点的最短时间,如果不存在,用-1表示 ... 阅读全文
posted @ 2014-10-19 00:15 Love风吟 阅读(202) 评论(0) 推荐(0)
ZOJ1004 && HDU1515 dfs回溯
摘要:题目大意:就是通过一个栈进行字母入栈出栈得到想要的字符,把所有可能的方式全部输出自己写的方法一开始一直不能过,后来参考了别人的方法,写出来的比较简单的代码这段代码更有回溯的感觉,自己后来又把自己原来想法的代码写了一遍,终于写出来了,不过有点让人头晕 1 #include 2 #include 3... 阅读全文
posted @ 2014-09-25 23:19 Love风吟 阅读(238) 评论(0) 推荐(0)
HDU 1016 素数环问题
摘要:题目大意:给定1-n这n个数,组成以1开头的素数环,保证相邻两个数相加均为素数题目用dfs搜索再回溯,这样碰到不成立的立刻退出递归,就减少了很多步骤,不然暴力来就是n!次复杂度,肯定是超时的每次添入数据都要判断是否相邻数相加为素数,所以我们可以提前打个素数表,这样使自己判断素数更加方便 1 #inc... 阅读全文
posted @ 2014-09-25 18:30 Love风吟 阅读(331) 评论(0) 推荐(0)
HDU1241&POJ2386 dfs简单题
摘要:2道题目都差不多,就是问和相邻所有点都有相同数据相连的作为一个联通快,问有多少个连通块因为最近对搜索题目很是畏惧,总是需要看别人代码才能上手,就先拿这两道简单的dfs题目来练练手,顺便理一理dfs的思路,分析清楚dfs的退出递归的条件和什么时候进行递归调用是至关重要的,这两道题目不涉及回溯,对于需要... 阅读全文
posted @ 2014-09-25 00:54 Love风吟 阅读(682) 评论(0) 推荐(0)
POJ 1321 dfs
摘要:在棋盘上放置棋子使它们任意两个都不在同一行或同一列dfs(x,k)表示的是访问到第x行已放置了k个棋子这道题我们以每行或者每列为单位来看题,每次搜索都对一整行进行访问,并在安置棋子的点的列位置上使其visit[col]=1如果放置成功那么dfs(x+1,k+1),再进行回溯不论是否成功,都要dfs(... 阅读全文
posted @ 2014-09-09 11:03 Love风吟 阅读(165) 评论(0) 推荐(0)
POJ 1191 DP+DFS棋盘分割问题
摘要:题目大意:Description将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值... 阅读全文
posted @ 2014-09-08 15:34 Love风吟 阅读(301) 评论(0) 推荐(0)
HDU 1078 dfs+dp
摘要:题目大意:在n*n的矩阵中,每个格子放置了一定数量的食物,一只老鼠每次水平或竖直最多移动k格,每次到的位置食物都要比前一次多,问最后一共能得到多少食物这道题利用记忆化搜索做,利用nowstate不断记录下一个位置所能到达的最大值,利用nowstate+mat[i][j](当前区域中所含的食物数量)得... 阅读全文
posted @ 2014-09-08 13:48 Love风吟 阅读(437) 评论(0) 推荐(0)
HDU 1278
摘要:题目大意:从(1,1)到(n,n),每经过一个点都要花费一定的时间,问花最短时间的路径有多少条dfs+dp先用bfs把所有到n花费的时间逆向dp计算一遍再用dfs不断找到前一个对应的较短路径的点不断搜索路径 1 #include 2 #include 3 #include 4 using na... 阅读全文
posted @ 2014-09-07 11:52 Love风吟 阅读(234) 评论(0) 推荐(0)
HDU 4499
摘要:题目大意:N*M的棋盘上摆了一些棋子,在剩余位置上尽可能多的摆上炮,使所有炮不能互吃dfs+回溯 1 #include 2 #include 3 #include 4 #define max(x,y) x>y?x:y; 5 using namespace std; 6 int a[30],b[... 阅读全文
posted @ 2014-09-06 19:33 Love风吟 阅读(238) 评论(0) 推荐(0)
HDU 4597
摘要:题目大意:两人轮流从两堆牌从抽取最顶端或者最底部的牌,得到的分数加到自己身上,问先拿牌的最多能得多少分记忆化搜索,2堆牌的底和顶,有四种方法,根据四种方法来找到最优解 1 #include 2 #include 3 #include 4 using namespace std; 5 int d... 阅读全文
posted @ 2014-09-06 18:59 Love风吟 阅读(393) 评论(0) 推荐(0)
迷宫问题
摘要:迷宫问题通常是采用bfs方法去做,而且利用队列保存所访问过的但还未进行操作的点,从一个点出发将整个图遍历一遍,遍历过程中通过事先保存的用二维数组代表的方向,每次遍历每个方向在迷宫问题中往往判断能否到达一个点,就是从你所要出发的点开始遍历,bfs完成后,去找那个点对应的visit值来进行判断而在bfs... 阅读全文
posted @ 2014-08-09 23:58 Love风吟 阅读(245) 评论(0) 推荐(0)
CodeForce 448C 木片填涂问题
摘要:题目大意:有多片木片需要填涂,可以每次横着涂一行,也可以一次涂一列,当然你涂一行时遇到中间长度不够高的木片,填涂到此中断这题目运用dfs能更容易的解出,虽然还是十分不容易理解 1 #include 2 3 using namespace std; 4 5 #define N 5010 6 in... 阅读全文
posted @ 2014-07-26 15:36 Love风吟 阅读(395) 评论(0) 推荐(0)