POJ2488——简单DFS
来源:互联网 发布:recyclerview清空数据 编辑:程序博客网 时间:2024/04/29 23:13
Question:
题目中给出了国际象棋的地图,要求我们将马按照他的走子方式进行移动,能够将整个棋盘走遍则我们将走姿方式按照字典序进行输出,否则输出impossible
Solution:
本题主要考察的是方向数组的顺序,首先,我们需要明确一点,如果我们要按照字典序进行输出的话并且还要踩遍整个棋盘,我们那必定会经过A1点,所以说我们的顺序必定是开头是A1的一组字典序顺序
按照上图的方向数组的选择方式我们可以轻松的是实现个路径记录的DFS
Code:
#include"iostream"#include"cstdio"#include"cstdlib"#include"cstring"using namespace std;typedef struct node{int x;int y;}point;point queue[30*30];int nownum;int p,q;int book[30][30];int move[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};bool dfs(int x,int y){if(nownum==p*q) return true;for(int i=0;i<8;i++){int dx=x+move[i][0];int dy=y+move[i][1];if(dx<1||dx>p||dy<1||dy>q||book[dx][dy]==1) continue;else{book[dx][dy]=1;queue[++nownum].x=dx;queue[nownum].y=dy;if(dfs(dx,dy)) return true;else{nownum--;book[dx][dy]=0;}} }return false;}int main(){int t;cin>>t;int j=1;while(t--){memset(book,0,sizeof(book));memset(queue,0,sizeof(queue));nownum=0;cin>>p>>q;cout<<"Scenario #"<<j<<":"<<endl;j++;book[1][1]=1;queue[1].x=queue[1].y=1;nownum++;if(dfs(1,1)){for(int i=1;i<=p*q;i++) printf("%c%d",(char)(queue[i].y+64),queue[i].x);cout<<endl;}else cout<<"impossible"<<endl;if(t!=0) cout<<endl; }return 0;}
0 0
- POJ2488——简单DFS
- DFS—poj2488
- poj2488——A Knight's Journey(dfs)
- POJ2488 DFS
- poj2488(dfs)
- POJ2488【DFS】
- poj2488(dfs)
- poj2488(dfs)
- poj2488 A Knight's Journey(简单dfs)
- poj2488 A Knight's Journey 简单DFS 注意搜索步骤
- poj2488(经典dfs)
- POJ2488 骑士游历(DFS)
- poj2488~dfs基础题
- POJ2488 -- POJ1154-- DFS
- POJ2488 dfs回溯
- poj2488 DFS基础
- poj2488 dfs模版
- Knight's Journey(poj2488,dfs)
- 【学习笔记】<算法导论>基础知识1.1
- BroadcastReceiver使用方式
- HDU1181-变形课
- 【CERC2013】bzoj4052 Magical GCD
- sql 通过数据字典查询表的相关信息
- POJ2488——简单DFS
- Java学习过程中的一些小的见解
- Bitmap高效加载、Cache和优化(二)
- Ubuntu 16.04LTS+NVIDIA@GT620M+CUDA6.5环境搭建总结
- 关于GCD的学习笔记
- HDU 5873 Football Games(签到题)——2016 ACM/ICPC Asia Regional Dalian Online
- Tomcat 类加载器结构
- C语言 顺序表的实现(静态)
- 7.15 N,O,P,Q Codeforces 691 A,B,C,D