博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2488 A Knight's Journey (DFS)
阅读量:7282 次
发布时间:2019-06-30

本文共 1326 字,大约阅读时间需要 4 分钟。

题目给出棋盘的尺寸,骑士随便从哪出发,且只能走“日”字。不经过重复的点走完,结果按字典序输出。因为A1字典序最小,所以所求的路径一定是从A1开始的。

输出没冒号,入坑WA了几次。以后多注意。

#include 
#include
#include
using namespace std;int a,b;bool visit[30][30];char path[30][5];int dx[10]= {-1,1,-2,2,-2,2,-1,1}; //8个方向,已按字典序拍好int dy[10]= {-2,-2,-1,-1,1,1,2,2};bool dfs(int x,int y,int num){ if(num==a*b) return true; for(int i=0;i<8;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(nx>0 && nx<=a && ny>0 && ny<=b && visit[nx][ny]==false) { path[num+1][0]=nx+'0'; path[num+1][1]=ny+'A'-1; visit[nx][ny]=true; if(dfs(nx,ny,num+1)) return true; visit[nx][ny]=false; } } return false;}int main(){ //freopen("in.txt","r",stdin); int n; scanf("%d",&n); for(int j=1;j<=n;j++) { scanf("%d%d",&a,&b); memset(visit,0,sizeof(visit)); memset(path,0,sizeof(path)); path[1][0]='1'; path[1][1]='A'; visit[1][1]=true; printf("Scenario #%d:\n",j); if(dfs(1,1,1)) for(int i=1;i<=a*b;i++) printf("%c%c",path[i][1],path[i][0]); else printf("impossible"); printf("\n\n"); } return 0;}

 

转载于:https://www.cnblogs.com/pach/p/5730471.html

你可能感兴趣的文章
很多开发人员的毛病
查看>>
云应用程序很慢?原因在应用,而不是云
查看>>
Linux下Git安装及配置
查看>>
量子纠缠:从量子物质态到深度学习
查看>>
多家银行手机转账现高危漏洞 ,用户资金或被非法窃取
查看>>
火币网徐宝龙谈大数据网络攻防与区块链
查看>>
企业并购中值得留意的10个陷阱
查看>>
布线须知:皮线光缆的特点
查看>>
软件定义网络对我们有多重要?
查看>>
黑客组织APT6入侵美国政府网络长达数年,奥巴马造吗?
查看>>
《中国人工智能学会通讯》——2.5 智能汽车人机交互与人机协同技术 的研究进展...
查看>>
从比特币说起, “区块链”到底是什么
查看>>
《数字视频和高清:算法和接口》一1.9标清和高清
查看>>
黑客攻击频发 网络安全公司借机争相IPO
查看>>
《VMware Virtual SAN权威指南》一1.3 超融合/服务器SAN解决方案
查看>>
《中国人工智能学会通讯》——7.19 挑战与机遇
查看>>
飞康发布业界首个标准化融合数据服务平台FreeStor
查看>>
浪潮成立人工智能部门 为AI提供顶尖计算产品
查看>>
飞康NSS虚拟化技术助力知名高校迈向数字化校园
查看>>
VMware正式加入Open-O 身份为白金会员
查看>>