Poj(2488),按照字典序深搜
2016-08-01 15:23
423 查看
题目链接:http://poj.org/problem?id=2488
思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序。
后来,凡哥说可以在搜索路径的时候就按照字典序搜索,这样一找到可行的路径就输出来就行了。这里我吸取了之前八皇后问题时犯的错,并且优化了一下写法,就是flag,这是参考了jhf大神的写法了。
但是jhf大神的写法,思路和我一样,但是他的x,y坐标还要转来转去,我就没有这么写了,还是按照我的代码风格好一些。
思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序。
后来,凡哥说可以在搜索路径的时候就按照字典序搜索,这样一找到可行的路径就输出来就行了。这里我吸取了之前八皇后问题时犯的错,并且优化了一下写法,就是flag,这是参考了jhf大神的写法了。
但是jhf大神的写法,思路和我一样,但是他的x,y坐标还要转来转去,我就没有这么写了,还是按照我的代码风格好一些。
#include <stdio.h> #include <string.h> bool vis[30][30]; int to[8][2] = {{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}}; int R,C; bool flag; struct Path { int r; int c; } path[30*30]; bool judge(int r,int c) { if(r<0||r>=R||c<0||c>=C||vis[r][c]) return false; return true; } void dfs(int r,int c,int k) { path[k].c = c; path[k].r = r; if(k==C*R) { flag = true; return ; } for(int i=0; i<8; i++) { int rx = r+to[i][0]; int cx = c+to[i][1]; if(judge(rx,cx)) { vis[rx][cx] = true; dfs(rx,cx,k+1); if(flag) return; vis[rx][cx] = false; } } } int main() { int t; scanf("%d",&t); for(int cases=1; cases<=t; cases++) { memset(vis,false,sizeof(vis)); printf("Scenario #%d:\n",cases); scanf("%d%d",&R,&C); for(int i=0; i<C; i++) { for(int j=0; j<R; j++) { flag = false; vis[j][i] = true; dfs(j,i,1); if(flag) break; vis[j][i] = false; } if(flag) break; } if(flag) { for(int i=1;i<=R*C;i++) printf("%c%d",path[i].c+'A',path[i].r+1); puts("\n"); } else printf("impossible\n\n"); } return 0; }
相关文章推荐
- poj2488--------------深搜(注意字典序)
- (POJ 3687)Labeling Balls [逆top序列] 求按照某种排列方式的字典序最小的top序列
- (水)POJ-2488字典序dfs
- 深搜_Poj_2488(字典序)
- POJ-2488 A Knight's Journey 解题报告(搜索) 马跳遍棋格的字典序问题
- poj 2337 欧拉回路按照最小字典序输出+注意为了按最小字典序怎么处理邻接表
- POJ_2488——骑士遍历棋盘,字典序走法
- poj 2488 A Knight's Journey 【dfs】【字典序】【刷题计划】
- POJ2488
- POJ-2488-A Knight's Journey
- poj 2192 DP 2个字符串 按照原来的先后顺序 看能否组成特定的字符串
- 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
- poj 2488(DFS)
- poj 2488 A Knight's Journey
- poj A Knight's Journey(DFS)(字典序)
- POJ 2488 A Knight's Journey