POJ 2488 A Knight's Journey
来源:互联网 发布:php服务器怎么绑定域名 编辑:程序博客网 时间:2024/06/05 05:38
本着对深搜掌握不牢的原则,所以找到这倒深搜推荐题~~~
感觉一开始题意理解起来有些困难,其实也就是象棋中的马走遍所有的方格,遍历搜索还是比较简单的,但是路径的保存还是稍稍的卡了那么一下下。。。
最终定下的是用数组与进制的思路来保存的~~~
代码如下:
#include<stdio.h>#include<string.h>int vis[30][30];int divs[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};int flag;int res;int p,q;int num[1000];int t;void dfs(int x,int y,int deep){ // printf("**%d %d\n",deep,p*q); if(deep>=p*q) { flag=1; return; } for(int i=0;i<8;i++) { if((x+divs[i][0])>=0&&(y+divs[i][1])>=0&&(x+divs[i][0])<p&&(y+divs[i][1])<q&&!vis[x+divs[i][0]][y+divs[i][1]]) { //printf("%d %d\n",x+divs[i][0],y+divs[i][1]); vis[x+divs[i][0]][y+divs[i][1]]=1; num[t++]=(x+divs[i][0])*100+(y+divs[i][1]); dfs(x+divs[i][0],y+divs[i][1],deep+1); if(flag) return ; vis[x+divs[i][0]][y+divs[i][1]]=0; t--; } }}int main(){ int n; int count=0; scanf("%d",&n); while(n--) { count++; memset(vis,0,sizeof(vis)); scanf("%d%d",&p,&q); t=0;flag=0; num[t++]=0; vis[0][0]=1; dfs(0,0,1); printf("Scenario #%d:\n",count); if(flag==1) { for(int i=0;i<t;i++) { int a=num[i]/100+1; char c=num[i]%100+'A'; printf("%c%d",c,a); } } else printf("impossible"); printf("\n\n"); } return 0;}
0 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 (dfs)
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488(A Knight's Journey)
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- 跨服务器上传图片
- linux下修改主机名
- HDU 1113(map的使用)
- 获取android多个sd卡路径的方法
- 第二章 链路层 2.2以太网和IEEE 802封装
- POJ 2488 A Knight's Journey
- 图片异步加载
- 这些事,我不作,别人也会作
- LearnVSXNow! #9 - 创建我们第一个工具集-重构为服务
- directshow+wince6.0+pxa310+双camera
- memset
- photoshop怎么抠图
- 黑马程序员-学习日志-单例设计模式
- ueditor单独调用上传附件和图片的功能