dfs
躺平平的弱鸡
IT界资深菜鸟。。
展开
-
NY325zb的生日
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=325深搜的思想,(剪枝非常重要!!!dfs(i + 1) 就是剪枝了)我的思路是边界分为三种情况,以总重量的一半t为基准1.如果搜到的重量小于t,那就更新最小重量差2.如果相等的话,说明这个西瓜能平分了,然后就看总重量了3.如果大于,更新最小重量差,然后rentur原创 2016-03-29 22:28:40 · 362 阅读 · 0 评论 -
uva129困难的串(dfs+判断)
思路:就是检查每一个位置应该填什么,并且填完要保证是不能有相邻的自子串,只需要从后向前枚举长度i = 2.....(当前字符串长度 + 1) / 2,然后判断一下就行,具体看代码,有点乱。。代码:#include #include int n,l;char ans[100];int flag;int cnt ;FILE *fw;bool check(cha原创 2016-10-12 22:52:02 · 442 阅读 · 0 评论 -
uva524素数环
回溯法应用。代码:#include #include #include const int maxn = 100;int n;int a[maxn];int v[maxn];int v1[maxn];void Eratoshenes(int n) //素数筛{ int m = sqrt(n); memset(v,0,sizeof(v));原创 2016-10-12 18:27:04 · 267 阅读 · 0 评论 -
NYOJ202红黑树
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=202一定要仔细的读题!!! 题目要求旋转完了再输出中序序列,而不是旋转一次输出一次,坑!!!!性质:红黑树旋转几次之后中序序列都一样!!!!第一次写旋转的代码:#include #include struct node{ int parent原创 2016-08-31 20:32:21 · 384 阅读 · 0 评论 -
NYOJ587blockhouses
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=587题目大意就是说在一个至多为4*4的格子中放置城堡,要求同行、同列只能有一个城堡,除非在同行、同列有墙隔着,给你初始化的地图,问你最多能放置多少个城堡.思路:深搜的思想,每一个除了是墙的格子,都有放城堡或者不放城堡的选择,然后对每个格子都进行搜索一遍就OK了!!!原创 2016-08-29 20:20:23 · 480 阅读 · 0 评论 -
hdu1198Farm Irrigation
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1198我是在最小生成树的分类做的这个题,说好的最小生成树呢。。。dfs实现: 初始化每个板块四个方向的连通性,然后dfs就可以了,搜索的时候注意越界,重复访问,下一个板块的连通性问题。#include #include char s[100][100];int原创 2016-05-06 19:21:38 · 485 阅读 · 0 评论 -
NYOJ4324 Point game(DFS)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=43思路是模仿别人的。思路:每次从数组中选出来两个数,做完四则运算在放回去,直到剩最后一个数,和给定的值比较。代码:#include #include double number[10];int m,n;bool dfs(int e原创 2016-04-20 19:51:03 · 274 阅读 · 0 评论 -
hdu1175连连看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175写了10次,才对。。。代码都应该很清楚了。一个dfs函数就可以了,参数记录了方向,转弯次数。代码:#include #include int a[1005][1005];int v[1005][1005];int n,m;int x1,y1,x2原创 2016-05-04 20:59:08 · 440 阅读 · 0 评论 -
hdu1045FireNet
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045思路:一行一行的搜索,如果当前为‘X' ,就搜下一个,如果当前为'.' ,判断能不能放一个装置,如果不能,直接搜索下一个,如果能,也要分两种情况,一种放,一种不放。代码(有点长,但是好理解):#include #include char s[10][10]原创 2016-04-18 23:09:03 · 432 阅读 · 0 评论 -
NYOJ10skiing
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=10我的第一种方法是对矩阵的每个顶点当作起点搜索一遍,结果是用时260MS,代码:#include #include using namespace std;#define inf 1e6int mp[105][105];int r,c;int v[105]原创 2016-04-17 12:26:32 · 352 阅读 · 0 评论 -
hdu1728逃离迷宫(BFS最优解)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728这道题是利用了BFS中的DFS思想,从上下左右4个点扩展到了4个方向。 这是本题的重点。代码:#include #include #include using namespace std;char s[105][105];int n,m;int k,x1原创 2016-05-11 20:32:56 · 775 阅读 · 2 评论 -
NYOJ19擅长排列的小明
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=19一个深搜就搞定了。。代码:#include #include int n,m;int a[15];int v[15];void dfs(int step){ if(step == m + 1) { for(int原创 2016-04-11 18:34:31 · 288 阅读 · 0 评论 -
NOOJ927The partial sum problem
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=927这也算是个0-1背包的思想的吧。加上剪枝。代码:#include #include #include using namespace std;int n,k;int a[25];bool dfs(int cur,int sum){原创 2016-04-14 21:07:40 · 293 阅读 · 0 评论 -
hdu1010
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010先说下这个题的坑: 1)要求是正好的时间到达,因为这个坑了很多次WA。。 2)减枝。一个是算最短路径都大于给定时间的,一个是奇偶性的问题,比如(0,0)点到了(1,1)要走偶数步,而到(0,1)要走奇数步,判断一下题目给的时间是否符合,还有一个是dfs写的时转载 2016-03-17 20:33:28 · 532 阅读 · 0 评论 -
hdu2553N皇后问题(预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553基本的DFS,标记数组就是用二维的,放在第i列时, v[0][i] 判断当前第i列有没有用过, v[1][cur + i] 判断副对角线有没有用过,v[2][cur - i + n]判断主对角线, + n是为了防止出现负数造成数组越界.代码:(dfs函数也写在里面了)原创 2016-04-05 17:00:17 · 346 阅读 · 0 评论 -
NY27水池数目
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=27大名鼎鼎的Floodfill漫水填充法(种子填充法),设置一个flag = - 1,搜到一个独立区域,就用它填充,然后--flag; 对图的每个满足条件的点都进行dfs,然后最后处理flag一下 在输出代码:#include #include原创 2016-03-29 23:01:51 · 269 阅读 · 0 评论 -
uva140带宽
写的比较乱,全排列 的形式 + 回溯代码:#include #include #include using namespace std;char s[1000];int k ;//结点个数int v[100];struct node{ char name; char next[15]; int len; int flag;}a[30],b[10原创 2016-10-17 17:50:46 · 271 阅读 · 0 评论