POJ——2488(深搜)
来源:互联网 发布:linux虚拟机ip设置 编辑:程序博客网 时间:2024/05/29 20:01
1.题目地址:
http://121.249.217.157:8080/contest/view.action?cid=54#problem/E
http://poj.org/problem?id=2488
2.可参考地址:http://blog.csdn.net/lyy289065406/article/details/6647666
3.自己的思路:
(1)字典序输出,所以在设置方向数组的时候,要设置好,(我设置的方向数组保证先找到的一定为字典序)
(2)设置flag[ ][ ]保证不回到前一结点,但当它后续路径都不能到达的时候,要重新设置为0。
4.源代码:
#include<iostream>
#include<string.h>
using namespace std;
int dr1[8]={-2,-2,-1,-1,1,1,2,2};
int dr2[8]={-1,1,-2,2,-2,2,-1,1};
int p,q;
int neng;
int flag[30][30];
struct N
{
char c;
int y;
}a[9000];//存储的是路径
void dfs(int x,int y,int count)
{
int dx,dy;
for(int i=0;i<8;i++)
{
dx=x+dr1[i];
dy=y+dr2[i];
if(dx>=0&&dx<p&&dy>=0&&dy<q&&!neng&&!flag[dx][dy])
{
a[count].c=dx+'A';
a[count].y=dy+1;
flag[dx][dy]=1;
if(count==p*q-1)
{
neng=1;
for(int k=0;k<=count;k++)
cout<<a[k].c<<a[k].y;
cout<<endl;
break;
}
dfs(dx,dy,count+1);
flag[dx][dy]=0;
}
}
}
int main()
{
int case1;
cin>>case1;
int mid=case1;
while(case1--)
{
cin>>q>>p;
if(mid-1!=case1) cout<<endl;
neng=0;
cout<<"Scenario #"<<mid-case1<<":"<<endl;
if(q==1&&p==1)
{
cout<<"A1"<<endl;
continue;
}
memset(flag,0,sizeof(flag));
flag[0][0]=1;//初始设置
a[0].c='A';
a[0].y=1;
dfs(0,0,1);
if(!neng) cout<<"impossible"<<endl;
}
}
- POJ——2488(深搜)
- POJ——2488(深度搜索)
- POJ——1979(深搜)
- POJ—2253(Frogger)
- poj 2488 深搜+回溯
- poj 2488 深搜
- poj 2488 深搜
- 经典回溯——POJ 2488
- poj解题报告——2488
- poj—2488骑士的旅程
- Find The Multiple ——深搜POJ
- POJ 2488(DFS)
- POJ 2488(DFS)
- ACM——POJ 3295 (Tautology)
- POJ ——1465(宽度搜索)
- POJ——3278(宽搜)
- POJ——2635(数论)
- POJ——2249(组合数学)
- 防止刷新进行的二次表单提交====>struts 的 token
- 黑客也玩无间道之后门程序的后门
- 虚拟机网络连接方式和网络设置
- 美实验室启用量子网络已两年
- 嵌入式实时Linux的技术研究
- POJ——2488(深搜)
- 数据库考试笔记
- asp-- 函数
- wordpress作品展示主题:Salient
- javascript this关键字
- C语言实现合并排序
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- UC/OS和uClinux的比较