dfs
Beating_spark
Even a beating_spark can light a fire of wisdom!
展开
-
dfs回溯的注意事项
回溯可能是多个量回溯 别忘了 比如void dfs(int n,int temp) { if(n==10) {if(temp<min) min=temp;return;} if(temp>min) return; for(int i=1;i<=9;i++) if(!vis[i]) { int j;原创 2016-03-19 10:16:59 · 1376 阅读 · 0 评论 -
hdu1584 dfs的题目
这个题目还是挺有意思的,回溯,剪枝。 就是枚举所有的移动的情况,然后找出最小的。 代码如下,有助于新人提高; #include "stdio.h" #include "string" #include "stdlib.h" int min=10000;//初始化min,不停的更新,知道最后dfs的一定是最小值 int dist[11];//位置标记数组 int vis[11];//标记访问数原创 2016-03-13 11:50:15 · 282 阅读 · 0 评论 -
dfs的技巧
dfs很多人觉得难写,其实只要掌握好规律即可 : 1,每个dfs函数中必然有另外一个指向next的dfs函数 2,用好dfs的参数传递; 3,回溯比如刚开始标记访问,dfs一组之后结束标记访问 4,技巧性的,如果感觉写的很乱,可以在前边写剪枝与条件判断,后面再写递归原创 2016-03-13 12:00:29 · 604 阅读 · 0 评论 -
dfs的姿势 尽量减少不必要的搜索
好长时间不做搜索了 ,虽然做了一个简单的果断tle 和别人代码一比就看出高低了 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 1e9+7原创 2016-07-21 22:03:30 · 249 阅读 · 0 评论 -
The Rotation Game uva1343
#include #include #include #include #include #include using namespace std; #define N 10 int n; int mat[N][N]; int pos=0; int ans[100]; bool read() { if(cin>>mat[1][3]&&mat[1][3]) { c原创 2016-10-08 03:49:23 · 240 阅读 · 0 评论