POJ 2488 A Knight's Journey
2012-06-11 14:51
162 查看
A Knight's Journey
DFS题目,采用回溯的方式接着道题目,这个题目,是求序列中最小的,那么我们只需保证在搜索的时候每次都搜索为搜索的序列中最小的即可。只需要在搜索方向的时候注意一下即可。优先搜索靠近左侧的,同样的情况下优先搜索靠近底边的。代码如下:
DFS题目,采用回溯的方式接着道题目,这个题目,是求序列中最小的,那么我们只需保证在搜索的时候每次都搜索为搜索的序列中最小的即可。只需要在搜索方向的时候注意一下即可。优先搜索靠近左侧的,同样的情况下优先搜索靠近底边的。代码如下:
#include<stdio.h> #include<string.h> int map[30][30] ; int dir[][2] ={{-2 , -1} , {-2 ,1} , {-1 , -2} , {-1 , 2} , {1 , -2} , {1, 2} , {2 , -1} ,{2, 1}} ; int n; int row ; int col ; int pos ; char str[100] ; int dfs(int x , int y, int cnt){ int i ; int xn ; int yn ; if(cnt == row * col) return 1 ; for(i = 0 ; i < 8 ; i ++){ xn = x + dir[i][0] ; yn = y + dir[i][1] ; if(xn > 0 && xn <= row && yn > 0 && yn <= col){ if(!map[xn][yn]){ str[pos] = xn - 1 + 'A' ; pos ++ ; str[pos] = yn + '0' ; pos ++ ; map[xn][yn] = 1 ; if(dfs(xn , yn , cnt + 1)){ return 1 ; } str[--pos] = '\0' ; str[--pos] = '\0' ; map[xn][yn] = 0 ; } } } return 0 ; } int main(){ scanf("%d" , &n) ; int test ; test = 1 ; while(n--){ scanf("%d %d" , &col , &row) ; printf("Scenario #%d:\n" , test++) ; int i ; int j ; memset(str , 0 , sizeof(str)) ; memset(map , 0 , sizeof(map)) ; pos = 0 ; bool flag = 0 ; for(i = 1 ; i <= row ; i ++){ for(j = 1 ; j <= col ; j ++){ map[i][j] = 1 ; str[pos] = i - 1 + 'A' ; pos ++ ; str[pos] = j + '0' ; pos ++ ; if(dfs(i , j , 1)==1){ flag = 1 ; break ; } --pos ; str[pos] = '\0' ; --pos ; str[pos] = '\0' ; map[i][j] = 0 ; } } if(flag == 1){ printf("%s\n" , str) ; } else printf("impossible\n") ; printf("\n") ; } return 0 ; }
相关文章推荐
- 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 POJ - 2488
- POJ 2488 DFS 模拟 马的跳动
- POJ 2488 *** A Knight's Journey
- POJ2488 A Knight's Journey 解题报告
- 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(DFS+回溯)
- 没过!poj 2488 a knight's journey
- POJ 2488(DFS)
- poj 2488 A Knight's Journey (dfs)
- poj-2488
- DFS--poj 2488
- POJ 2488 A Knight's Journey DFS
- 【POJ】2488 - A Knight's Journey dfs+回溯