题目大意:国际象棋里面的马,有那么8种跳法,然后题目给出一个棋盘的大小p*q, 求有没有路线可以使得这个马能把整个棋盘的格全部走一遍,有的话按照字典序将第一条路线打印出来。

注意:国际象棋是行是数字,列是字母,按照字典序A1B3....,是需要按照先列后行来处理的。

因为要找一条路径出来,所以考虑深度优先(DFS)

贴一下烂代码(o(╯□╰)o):

#include<iostream>
#include<string>
using namespace std; int chess[][];
int path;
bool exist=;
string rec; void DFS(int y,int x,int szy,int szx)
{
chess[x][y]=;
path++;
rec.push_back(char(y+'A'));
rec.push_back(char(x+''));
//cout<<"Beginning:"<<rec<<endl;
int increx,increy;//,flag=0;
for(int n=;n<;n++)
{
switch(n){
case :
increy=-;increx=-;break;
case :
increy=-;increx=;break;
case :
increy=-;increx=-;break;
case :
increy=-;increx=+;break;
case :
increy=+;increx=-;break;
case :
increy=+;increx=+;break;
case :
increy=+;increx=-;break;
case :
increy=+;increx=+;break;
}
if(y+increy>=szy||y+increy<||x+increx>=szx||x+increx<) continue;
else if(chess[x+increx][y+increy]==)
{
DFS(y+increy,x+increx,szy,szx);
}
} if(path==szy*szx)
{
//cout<<"result:"<<rec<<endl;
exist=;
}
else{
path--;
rec.erase(rec.end()-);
rec.erase(rec.end()-);
//cout<<"Delete:"<<rec<<endl;
chess[x][y]=;
} } int main()
{
int instan,p,q,i,j,k;
cin>>instan;
for(i=;i<instan;i++)
{
exist=; memset(chess,,sizeof(chess));
cin>>p>>q;
cout<<"Scenario #"<<i+<<":"<<endl;
for(j=;j<q;j++)
{
for(k=;k<p;k++)
{
path=;
rec.clear();
//cout<<"Start from "<<k<<" "<<j<<":"<<endl;
DFS(j,k,q,p);
if(exist==)
{
cout<<rec<<endl;
break;
} }
if(exist==)
{
break;
}
}
if(exist==) cout<<"impossible"<<endl;
cout<<endl; }
return ;
}

最新文章

  1. [C#] 图文解说调用WebServer实例
  2. linux创建用户、设置密码、修改用户、删除用户
  3. ie9及以下不兼容event.target.dataset对象
  4. iOS 即时通讯SDK的集成,快速搭建自己的聊天系统
  5. NY-字符串替换
  6. mysql集群 MySQL Cluster
  7. GB28181国检推流
  8. hdu 4714 Tree2cycle 树形经典问题
  9. LR_问题_控制器不能使用定义的负载生成器
  10. 改进《完美让IE兼容input placeholder属性的jquery实现》的不完美
  11. linux下安装PHP5.5
  12. 18.Class 的基本语法
  13. Qt中使用Boost库
  14. 【转】服务化框架技术选型与京东JSF解密
  15. VirtualBox使用入门
  16. ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn&#39;t supported yet………
  17. 互联网同步yum服务器阿里云 reposync createrepo
  18. iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法;ASP.NET 实现Base64文件流下载PDF
  19. Zookeeper+Curator 分布式锁
  20. php curl_init函数用法(http://blog.sina.com.cn/s/blog_640738130100tsig.html)

热门文章

  1. shell 中用管道模拟多线程
  2. csu 1503: 点弧之间的距离-湖南省第十届大学生计算机程序设计大赛
  3. Javscript轮播 支持平滑和渐隐两种效果(可以只有两张图)
  4. [C#]设置或取消开机启动(注册表形式)
  5. Objective-c中的单例
  6. 玩转Web之servlet(四)---B/S是怎样使用http协议完毕通信过程的
  7. Bootstrap transition.js 插件
  8. BZOJ 1208 HNOI2004 宠物收容所 平衡树/set
  9. Installshield停止操作系统进程的代码 --IS6及以上版本适用
  10. MVC5 + EF6 + Bootstrap3-10