poj2488_dfs_骑士
2012-07-23 12:14
330 查看
这也是一道DFS题,但写的还是不好。
题意:给一个矩阵r*c,求骑士可以从任意一点开始,是否能将这个矩阵中的各个点都走一遍。
分析:
1.字典顺序啊, lexicographical,当时也没管啥意思,唉。
2.不需要找到所有的情况,即如果遍历各点成功,就return ;
代码:
View Code
这都是dfs的简单题啊,看来得狂练。
此题也是tju oj1702
题意:给一个矩阵r*c,求骑士可以从任意一点开始,是否能将这个矩阵中的各个点都走一遍。
分析:
1.字典顺序啊, lexicographical,当时也没管啥意思,唉。
2.不需要找到所有的情况,即如果遍历各点成功,就return ;
代码:
View Code
#include <iostream> #include <stdio.h> #include <memory.h> using namespace std; const int maxnum=27; //27,怎么会是8呢 bool array[maxnum][maxnum]; int lenx[maxnum*maxnum]; int leny[maxnum*maxnum]; int ans,r,c,cur; int lx[8]={-1,1,-2,2,-2,2,-1,1}; //字典顺序啊 int ly[8]={-2,-2,-1,-1,1,1,2,2}; bool judge(int x,int y) { if(x>=1 && x<=r && y>=1 && y<=c && !array[x][y]) //老不加!array[][] return true; return false; } void dfs(int x,int y) { if(ans==r*c) return ; //终止条件 int i; for(i=0;i<8;i++) if(judge(x+lx[i],y+ly[i])) { array[x+lx[i]][y+ly[i]]=true; ans++; lenx[cur]=x+lx[i]; leny[cur]=y+ly[i]; cur++; dfs(x+lx[i],y+ly[i]); if(ans==r*c) return ; //没加,就会回溯 array[x+lx[i]][y+ly[i]]=false; ans--; cur--; } } int main() { int num,i,j,k; bool flag; scanf("%d",&num); for(k=1;k<=num;k++) { scanf("%d%d",&r,&c); flag=false; for(j=1;j<=c;j++) { for(i=1;i<=r;i++) { memset(array,false,sizeof(array)); array[i][j]=true; //没加 ans=1; //初始错了 cur=1; lenx[cur]=i; leny[cur]=j; cur++; dfs(i,j); if(ans==r*c) { flag=true; break; } } if(flag)break; } printf("Scenario #%d:\n",k); if(j==c+1) printf("impossible\n"); else { for(i=1;i<r*c;i++) printf("%c%d",leny[i]-1+'A',lenx[i]); if(i==r*c) printf("%c%d\n",leny[i]-1+'A',lenx[i]); } printf("\n"); } return 0; }
这都是dfs的简单题啊,看来得狂练。
此题也是tju oj1702
相关文章推荐
- POJ2488(骑士遍历)【dfs个人第一题!】
- POJ2488 A Knight's Journey(深搜DFS,字典序,骑士游历问题)
- POJ2488 A Knight's Journey 骑士巡游 DFS
- POJ2488 骑士游历(DFS)
- poj2488--A Knight's Journey(dfs,骑士问题)
- POJ2488 【骑士游历】( dfs + 回溯 )
- BZOJ_1085_[SCOI2005]骑士精神_IDDFS
- UVA 439 (骑士移动 第一道DFS 13.07.17)
- poj2488(dfs)
- POJ2488 dfs
- POJ2488 ——Dfs基础算法模板
- BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
- poj2488(dfs)
- poj2488 dfs模版
- [bzoj] 1085 骑士精神 || ID-DFS
- poj2488 dfs模版
- poj2488 dfs
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
- POJ2488-A Knight's Journey(DFS+回溯)
- poj2488 dfs模版