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

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

题目链接:

题目解读:首先得弄清楚国际象棋中关于“马走日”的规则,如上图中的马,它的下一步的走法有8中,所以对每一个位置的马,它所能走的8个方向坐标设置为

dir[8][2]= {

{
-1,-2},{
1,-2},{
-2,-1},{
2,-1},{
-2,1},{
2,1},{
-1,2},{
1,2}};

对于最后一组测试案例4 3

画出图解如下:

解题代码:

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int vis[100][100]; 7 int p,q,flag; 8 int dir[8][2]= {
{-1,-2},{
1,-2},{-2,-1},{
2,-1},{-2,1},{
2,1},{-1,2},{
1,2}}; 9 struct node{10 int x,y;11 }a[100];12 void dfs(int x,int y,int step)13 {14 a[step].x=x; a[step].y=y;15 if(step==p*q){16 for(int i=1;i<=step;i++)17 printf("%c%d",a[i].y-1+'A',a[i].x);18 printf("\n");19 flag=1;20 }21 if(flag) return;22 for(int i=0;i<8;i++){23 int xx=x+dir[i][0];24 int yy=y+dir[i][1];25 if(xx>0&&xx<=p &&yy>0&&yy<=q && vis[xx][yy]==0){26 vis[xx][yy]=1;27 dfs(xx,yy,step+1);28 vis[xx][yy]=0;29 }30 }31 }32 int main()33 {34 int T,cnt=1;scanf("%d",&T);35 while(T--){36 flag=0;37 memset(vis,0,sizeof(vis));38 scanf("%d%d",&p,&q);39 printf("Scenario #%d:\n",cnt++);40 vis[1][1]=1;41 dfs(1,1,1);42 if(flag==0)43 printf("impossible\n");44 printf("\n");45 }46 return 0;47 }

转载于:https://www.cnblogs.com/LJHAHA/p/10324804.html

你可能感兴趣的文章
JAVA基础-多线程
查看>>
面试题5:字符串替换空格
查看>>
[Codevs] 线段树练习5
查看>>
Amazon
查看>>
component-based scene model
查看>>
Echart输出图形
查看>>
hMailServer搭建简单邮件系统
查看>>
从零开始学习jQuery
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
opacity半透明兼容ie8。。。。ie8半透明
查看>>
CDOJ_24 八球胜负
查看>>
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>
基于Angular5和WebAPI的增删改查(一)
查看>>