poj 2488:A Knight's Journey
2014-07-07 19:09
447 查看
解题思路:
DFS + 路径保存
DFS + 路径保存
#include<iostream> #include<cstring> using namespace std; int m,r,c; int map[30][30]; //记录方格是否被覆盖 int x[100],y[100]; //记录路径 int num; //已经覆盖的方格数 bool flag; //是否已经找到可行解 void DFS(int i,int j) { if(flag) return; //找到结果 if(num == r*c) { for(int i=0;i<num;i++) cout<<char(x[i]+'A'-2)<<y[i]-1; cout<<endl<<endl; flag = true; return; } //骑士可运动的八个方向,注意次序 if(map[i-2][j-1] == 1) { map[i-2][j-1] = 0; x[num] = i-2; y[num] = j-1; num ++; DFS(i-2,j-1); map[i-2][j-1] = 1; num--; } if(map[i-2][j+1] == 1) { map[i-2][j+1] = 0; x[num] = i-2; y[num] = j+1; num ++; DFS(i-2,j+1); map[i-2][j+1] = 1; num--; } if(map[i-1][j-2] == 1) { map[i-1][j-2] = 0; x[num] = i-1; y[num] = j-2; num ++; DFS(i-1,j-2); map[i-1][j-2] = 1; num--; } if(map[i-1][j+2] == 1) { map[i-1][j+2] = 0; x[num] = i-1; y[num] = j+2; num ++; DFS(i-1,j+2); map[i-1][j+2] = 1; num--; } if(map[i+1][j-2] == 1) { map[i+1][j-2] = 0; x[num] = i+1; y[num] = j-2; num ++; DFS(i+1,j-2); map[i+1][j-2] = 1; num--; } if(map[i+1][j+2] == 1) { map[i+1][j+2] = 0; x[num] = i+1; y[num] = j+2; num ++; DFS(i+1,j+2); map[i+1][j+2] = 1; num--; } if(map[i+2][j-1] == 1) { map[i+2][j-1] = 0; x[num] = i+2; y[num] = j-1; num ++; DFS(i+2,j-1); map[i+2][j-1] = 1; num--; } if(map[i+2][j+1] == 1) { map[i+2][j+1] = 0; x[num] = i+2; y[num] = j+1; num ++; DFS(i+2,j+1); map[i+2][j+1] = 1; num--; } return; } int main() { cin>>m; for(int k=1;k<=m;k++) { memset(map,0,sizeof(map)); cin>>r>>c; for(int i=2;i<=c+1;i++) for(int j=2;j<=r+1;j++) map[i][j] = 1; cout<<"Scenario #"<<k<<":"<<endl; flag = false; num = 0; map[2][2] = 0; x[0] = 2; y[0] = 2; num ++; DFS(2,2); if(flag == false) cout<<"impossible"<<endl<<endl; } return 0; }
相关文章推荐
- POJ 2488-A Knight's Journey
- POJ 2488 A Knight's Journey (DFS深搜)
- POJ 2488 A Knight's Journey DFS深搜
- [ACM] POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ2488——A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey【dfs】
- POJ2488 A Knight's Journey(DFS)
- Poj 2488 A Knight's Journey(Dfs)
- POJ 2488 A Knight's Journey (dfs+改变搜索顺序)
- POJ - 2488 A Knight's Journey
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
- poj 2488 A Knight's Journey
- POJ_2488: A Knight's Journey
- Poj 2488 A Knight's Journey(搜索)
- poj2488 A Knight's Journey 之 dfs解法
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey