poj 2488
来源:互联网 发布:仓廪实而知礼节 编辑:程序博客网 时间:2024/06/06 13:20
字典序 x 1-7 y A-B
{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}
深度搜索如果避免存在回边的情况,即马要不重复的走过所有格。
点击(此处)折叠或打开
- #include <iostream>
- #include <list>
- #include <cstring>
- using namespace std;
- #define MAX_V (26+1)
- char board[MAX_V][MAX_V];
- int p,q,n;
- struct move
- {
- int i;
- int j;
- //}MOVE[8]={{1,-2},{-1,-2},{2,-1},{-2,-1},{2,1},{-2,1},{1,2},{-1,2}};
- //}MOVE[8]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2},};
- //}MOVE[8]={{2,-1},{1,-2},{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1}};
- //}MOVE[8]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
- }MOVE[8]={ {-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};
- //}MOVE[8]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
- struct qv
- {
- int i;
- int j;
- };
- list<struct qv> dfsList;
- int is_valid(int i,int j)
- {
- if(i < 1 || i> p)
- return 0;
- if(j< 1 || j> q)
- return 0;
- return 1;
- }
- int dfsVisit(int i,int j)
- {
-
- board[i][j]=1;
- struct qv _qv = {i,j};
- dfsList.push_back(_qv);
- if(dfsList.size() == p*q)
- return 1;
- for(int m=0;m<8;m++)
- {
- int mi=MOVE[m].i +i;
- int mj = MOVE[m].j +j;
- if(!is_valid(mi,mj))
- continue;
- if(board[mi][mj] == 0)
- {
- if(dfsVisit(mi,mj))
- {
- return 1;
- }
- }
- }
- board[i][j]=0;
- dfsList.pop_back();
- return 0;
- }
- int dfs()
- {
- for(int i=1;i<=p;i++)
- {
- for(int j=1;j<=q;j++)
- {
- memset(board,0,sizeof(board));
- dfsList.erase(dfsList.begin(),dfsList.end());
- //try start with i,j
- dfsVisit(i,j);
- //cout<<"after dfs i:"<<i<<"j:"<<j<<"size:"<<dfsList.size()<<endl;
- if(dfsList.size() == p*q)
- {
- return 1;
- }
- }
- }
- return 0;
- }
- int index_v=1;
- int main()
- {
- cin >> n;
- for(int k=1;k<=n;k++)
- {
- cin >>p>>q;
- //cout<<"p:"<<p<<"q:"<<q<<endl;
- cout<<"Scenario #"<<index_v<<":"<<endl;
- if(dfs())
- {
- for(list<struct qv>::iterator lIter = dfsList.begin();
- lIter != dfsList.end();
- ++lIter)
- {
- struct qv _qv = (*lIter);
- cout<<(char)(_qv.j+'A'-1)<<_qv.i;
- }
- cout<<endl;
- }
- else
- {
- cout<<"impossible"<<endl;
- }
- cout<<endl;
- index_v++;
- }
- }
0
上一篇:poj 2240
下一篇:poj 1321
相关热门文章
- linux 常见服务端口
- 【ROOTFS搭建】busybox的httpd...
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- cpu %和load average是怎样的...
- 如何确定线程使用的端口...
- mysql整形数据类型插入0001数...
- weblogic集群下启动服务有一个...
- Ajax 权限验证
给主人留下些什么吧!~~
评论热议
- POJ 2488
- POJ 2488
- POJ 2488
- poj 2488
- poj 2488
- POJ 2488
- poj 2488
- poj 2488
- POJ 2488
- poj 2488
- poj.2488
- POJ 2488
- POJ 2488
- poj-2488
- poj 2488
- poj 2488
- POJ 2488
- POJ 2488
- poj 1094 拓扑排序
- poj 1789 prim 图最小生成树算法
- poj 2253
- poj 1125
- poj 2240
- poj 2488
- poj 1321
- poj 3009 - Curling 2.0
- poj 3083
- HDU 4403 A very hard Aoshu problem
- jquery & js 获取浏览器、屏幕高度
- poj 2251
- 算法导论 DP 矩阵链乘法
- jquery控制动态生成的gridview中多列checkbox的全选反选及自动判断是否全选状态
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
灯罩发黄
红色led灯罩
diy灯罩
自制灯罩
手工灯罩
灯罩图片
吊灯灯罩
灯罩制作
制作灯罩
灯罩怎么做
led球泡灯罩
uv灯罩
反光灯罩
灯罩修复
陶瓷灯罩
灯罩工厂
亚麻布灯罩
景观灯灯罩
灯罩怎么取下来
汽车灯罩发黄小妙招
家里灯罩发黄小妙招
羊皮纸灯罩材料
汽车灯罩划痕修复
汽车大灯灯罩
方形吸顶灯灯罩怎么拆
吸顶灯灯罩厂家
吸顶灯灯罩机器
创意灯罩图片
自制吊灯灯罩图解
自制灯罩宜家图解
自制吊灯灯罩
自制镂空灯罩
手工灯罩制作方法大全
自制灯罩废物利用
led灯罩生产厂家
亚克力灯罩好不好
捷达尾灯灯罩多少钱
五菱之光后尾灯罩
简单漂亮的手工灯罩
照明灯为什么要装灯罩
照明灯上为什么要装灯罩