poj2488骑士之旅
题目大意:国际象棋里面的马,有那么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 ;
}
poj2488骑士之旅的更多相关文章
- poj2488骑士马走
#include<stdio.h> #include<stdlib.h> int data[100][100] = {0}; int Dx[8] = {-1,1,-2,2,-2 ...
- 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!
本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...
- bzoj4336: BJOI2015 骑士的旅行
Description 在一片古老的土地上,有一个繁荣的文明. 这片大地几乎被森林覆盖,有N座城坐落其中.巧合的是,这N座城由恰好N-1条双 向道路连接起来,使得任意两座城都是连通的.也就是说,这些城 ...
- Poweroj:来自学长的善意:ZQ的杀龙之旅(状压BFS)
传送门:https://www.oj.swust.edu.cn/problem/show/2794 来自学长的善意:ZQ的杀龙之旅 Time Limit: 15000 MS Memory Limit: ...
- 刷题总结——骑士的旅行(bzoj4336 树链剖分套权值线段树)
题目: Description 在一片古老的土地上,有一个繁荣的文明. 这片大地几乎被森林覆盖,有N座城坐落其中.巧合的是,这N座城由恰好N-1条双 向道路连接起来,使得任意两座城都是连通的.也就是说 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
随机推荐
- 霍夫曼(最优二叉树)和Java达到
一.定义 一些定义: 节点之间的路径长度:在从节点树中的一个节点也经历分公司,这构成的两个节点之间的路径分支的数目后这就是所谓的路径长度 的路径长度:从树的根节点到树中每一结点的路径长度之和. 在结点 ...
- Effective C++ 7
7.预先准备足够的内存情况. new当内存分配请求无法完成,它会抛出一个异常,怎么办异常,这是一个非常现实的,绝对必要的所遇到的问题后. 于c一般使用宏来分配内存和测试分发成功.c++中产阶级似下面的 ...
- jquery扩展
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- ThinkPHP 3.2 开放 cache注缓存,过滤非法字符
打开缓存配置文件 /Application/Common/conf/cache.php源代码如下面: <?php return array( //'配置项'=>'配置值' 'LAYOUT_ ...
- struts2的Action该方法不能去
最近做的一个特征,使用struts2,input标签内容,并与相应的内容背景的实体类,当提交方法,无法进入action该方法和程序没有报错被,检验N通方法还没有找到,查找终于找到了,它是input标签 ...
- 小结css2与css3的区别
CSS3引进了一些新的元素新的特性,我收集以下,自己做了一个小结: animation(基础动画)eg: div{animation: myfirst 5s linear 2s infinite a ...
- 高性能双端js模板---simplite
simplite是一款js实现的模板引擎,它能够完成浏览器端js模版和node服务器端js模板的数据渲染,渲染性能达到引擎的极限. 渲染性能十分突出. 支持浏览器端和node服务器端模板渲染. 它简单 ...
- android项目总体界面架构(可直接复用)
文章解读.效果图.源代码下载链接 http://blog.csdn.net/gao_chun/article/details/37903673
- MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)
1. 背景 在使用MonkeyRunner的时候我们经常会用到Chimchat下面的HierarchyViewer模块来获取目标控件的一些信息来辅助我们测试,但在MonkeyRunner的官网上是没有 ...
- 使用JavaCompiler编译java源文件
从1.6版本的JDK开始,JDK提供了标准的包可以方便的调用JVM的编译器,可以方便的使用JVM的编译器来编译java源文件.JDK提供的调用接口是JavaCompiler类,该类在JDK的tools ...