poj 2488 A Knight's Journey(DFS)
2014-03-05 22:02
232 查看
题意是给你一个p*q的棋盘,求骑士可否遍历它,若可以,按字典序输出骑士的路径。
本题分为两部分:
1.DFS。
深搜能搜到最底部,深搜的出口是深度等于棋盘个数。
2.字典序输出。
首先对棋盘编号如下:
所以图中八个点的字典序就为: B3... B5... C2... C6... E2... E6... F3... F5...
转变成变换坐标,为 (x,y) :(-1,-2)... (1,-2)... (-2,-1)... (2,-1)... (-2,1)... (2,1)... (-1,2)... (1,2).....
所以y对应的是字母,为横轴,x对应的是数字,为纵轴。(易错。。。)
代码:
come on!!虽然解不出题目思绪混乱很枯燥烦躁无比,但是希望自己能坚持下去!!!蓝桥杯不能当炮灰!!!
本题分为两部分:
1.DFS。
深搜能搜到最底部,深搜的出口是深度等于棋盘个数。
2.字典序输出。
首先对棋盘编号如下:
所以图中八个点的字典序就为: B3... B5... C2... C6... E2... E6... F3... F5...
转变成变换坐标,为 (x,y) :(-1,-2)... (1,-2)... (-2,-1)... (2,-1)... (-2,1)... (2,1)... (-1,2)... (1,2).....
所以y对应的是字母,为横轴,x对应的是数字,为纵轴。(易错。。。)
代码:
#include<stdio.h> #include<string.h> bool flag,vis[26][26]; int p,q,visnum; char path[60]; int dir[][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};//方向 void dfs(int dep,int x,int y) { if(dep==visnum) { flag=1; for(int i=0; i<2*dep; i++) printf("%c",path[i]); printf("\n\n"); return; } for(int i=0; i<8&&!flag; i++) { int nowx=x+dir[i][0]; int nowy=y+dir[i][1]; if(nowx>0&&nowx<=p&&nowy>0&&nowy<=q&&!vis[nowx][nowy]) { vis[nowx][nowy]=1; path[2*dep]=nowy+'A'-1; path[2*dep+1]=nowx+'1'-1; dfs(dep+1,nowx,nowy); vis[nowx][nowy]=0; } } } int main() { int n,i; scanf("%d",&n); for(i=1; i<=n; i++) { scanf("%d%d",&p,&q); printf("Scenario #%d:\n",i); memset(vis,0,sizeof(vis)); visnum=p*q; vis[1][1]=1; path[0]='A'; path[1]='1'; //这样的做法比较方便。 flag=0; dfs(1,1,1); if(!flag) printf("impossible\n\n"); } return 0; }
come on!!虽然解不出题目思绪混乱很枯燥烦躁无比,但是希望自己能坚持下去!!!蓝桥杯不能当炮灰!!!
相关文章推荐
- POJ2488 A Knight's Journey(DFS)
- poj 2488 A Knight's Journey (dfs)
- POJ 2488 DFS
- POJ 一 2488 A Knight's Journey(DFS)
- poj 2488 A Knight's Journey(dfs)
- POJ_2488_DFS
- poj 2488 DFS
- 搜索 -dfs-POJ-2488-A Knight's Journey
- poj 2488 DFS
- [DFS]poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey(dfs+记录路径)
- POJ-2488 A Knights Journey-深度优先搜索DFS
- poj 2488 dfs
- poj-2488-dfs
- POJ 2488 A Knight's Journey(dfs)
- poj-2488-water-DFS
- poj 2488 A Knight's Journey(DFS)
- poj 2488 A Knight's Journey(DFS)
- poj 2488(DFS)
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】