pku 2488 A Knight's Journey
来源:互联网 发布:软件研发人员职责 编辑:程序博客网 时间:2024/04/30 00:39
http://acm.pku.edu.cn/JudgeOnline/problem?id=2488
题意:给定p,q 求由任意位置开始访问,以何种路径能够访问完这个p*q的矩阵。
深度优先搜索。
#include <cstdio>#include <iostream>using namespace std;typedef struct{char x;char y;}Step;//路径节点结构体int point[8][2] = {{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};//所走路的步伐bool flag[50][50];//标记位int p,q;Step step[100];//存放路径节点int number;int count;bool dfs(int x,int y){ int i;int px,py; if(count == p*q)return true; for(i = 0;i < 8;i ++) { px = x+point[i][0];py = y+point[i][1];//所走步伐 if(px >= 1 && px <= q && py >= 1 && py <= p && flag[px][py] == false)//判断是否走出界以及该节点是否走过 { count ++;//节点自加1 flag[px][py] = true;//标记为真 if(dfs(px,py))//判断该节点是否有下一个节点可走 { step[number].y = py+'0'; step[number].x = px+64;//该节点的位置number ++; return true; } flag[px][py] = false;//若没有下一个节点可走标记赋值为false count --;//节点自减,减掉该节点 } } return false;}int main(){int i;int test,cas = 0;scanf("%d",&test);while(test --){memset(flag,false,sizeof(flag));//标记初始化flag[1][1] = true;//第一个节点标记为真count = 1;//节点初始化为1number = 0;scanf("%d%d",&p,&q);//输入长和宽printf("Scenario #%d:/n",++ cas);if(dfs(1,1))//由第一个节点开始深度优先遍历{step[number].y = '1';step[number].x = 'A';number ++;for(i = number - 1;i >= 0;i --)printf("%c%c",step[i].x,step[i].y);printf("/n");}elseprintf("impossible/n");printf("/n");}return 0 ;}
/*
31 12 34 3
Scenario #1:A1Scenario #2:impossibleScenario #3:A1B3C1A2B4C2A3B1C3A4B2C4
*/
- pku 2488 A Knight's Journey DFS
- pku 2488 A Knight's Journey
- pku 2488 A Knight's Journey
- pku 2488 A Knight's Journey(深搜)
- 典型地图搜索 pku 2488 A Knight's Journey
- pku 2488 A Knight's Journey (搜索 DFS)
- A Knight's Journey
- A Knight's Journey
- A knight's journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- linux下实现ssh自动登录远程服务器
- pku 2421 Constructing Roads
- [学习笔记]QTP项目应用与进阶
- Cannot umount /proc after using update-binfmts in a chroot
- 用javascript读写注册表
- pku 2488 A Knight's Journey
- IT行业销售的职业规划
- csdn的账户是换了又换,现在决定弄个稳定的账号,便于发表些看法,大家多来支持我呀!准备多写点文章
- make-kpkg 没有生成initrd 文件
- 最简单的cmd_8.22
- 静态库及动态库使用
- 电视分辨率
- 开机启动方法大全
- 将DIB位图写入位图文件