POJ 2488 A Knight's Journey
来源:互联网 发布:淘宝天猫购物券 编辑:程序博客网 时间:2024/06/11 19:47
题目连接:POJ 2488
/*这题属于最基础的搜索题,在平时的联系中遇到过很多次,然而每次都放弃了,这次终于耐心的把它敲出来了,看上去好懂,其实敲起来并不容易,卡了好多次才A掉
AC代码如下:
*/#include <stdio.h>#include <algorithm>#include <iostream>#include <cstring>using namespace std;const int maxn=30;int p,q,flag;int dir[8][2]= {{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}}; //8个方向的位移量 (切记:字典序!!!)int mark[maxn][maxn],a[maxn][2];int find(int x,int y,int cnt){ int dx,dy; if(cnt==q*p) //全部访问完毕,打印结果 { for(int i=0; i<cnt; i++) { printf("%c%d",a[i][0]+'A',a[i][1]+1); } printf("\n\n"); flag=1; //记得标记下 } else { for(int i=0; i<8; i++) { dx=x+dir[i][0]; dy=y+dir[i][1]; if(dx>=0 && dy>=0 && dx<q && dy<p && !mark[dx][dy] && !flag) { mark[dx][dy]=1; //标记已访问的点 a[cnt][0]=dx; a[cnt][1]=dy; //记录访问点的坐标 find(dx,dy,cnt+1); mark[dx][dy]=0; //清除标记,为下一次访问做准备 } } }}int main(){ int t,cas=1; scanf("%d",&t); while(t--) { memset(mark,0,sizeof(mark)); memset(a,-1,sizeof(a)); scanf("%d%d",&p,&q); printf("Scenario #%d:\n",cas++); flag=0; a[0][0]=0;a[0][1]=0; mark[0][0]=1; find(0,0,1); if(!flag) printf("impossible\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
- Html5存储总结(未完)
- 安卓android属性中的px,sp,dip有什么区别?
- SDWebImage内存缓存 磁盘缓存
- jQuery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
- Apache OFBiz Business Setup Guide - OFBiz End-User Documentatio
- POJ 2488 A Knight's Journey
- ognl表达式注意事项
- linux c 经常混淆的概念
- char*,const char*和string的相互转换
- 深入学习ThreadLocal
- 素数筛选法
- 送货
- 排序
- 【CODEFORCES】 C. Captain Marmot