POJ 2488 深搜dfs、
题意:模拟国际象棋中马的走棋方式,其实和中国象棋的马走的方式其实是一样的,马可以从给定的方格棋盘中任意点开始,问是否能遍历全部格子,能的话输出字典序最小的走棋方式,否则输出impossible
思路:只要能遍历全部的格子,就一定会走A1这个点,而且这个点的字典序是最小的,保证了这点的话还需要保证dfs的8个方向也要按照字典序最小来走,这样就可以确保所走的路径就是字典序最小的
坑爹:自己忘记输出Scenario #i,一连WA了几发,就是不知道自己错在哪里,顺便发一个对照的程序吧我的程序过16MS,他的程序0MS
先贴自己的
#include<cstdio>
#include<cstring>
#include<cmath>
const int qq=;
int vis[qq][qq];
int dx[]={-,-,-,-,,,,},
dy[]={-,,-,,-,,-,};
int map[qq][qq];
int n,m,flag,ans;
int check(int y,int x)
{
if(x<||y<||x>m||y>n||map[y][x])
return ;
return ;
}
void dfs(int y,int x,int step)
{
if(flag) return;
if(check(y,x)) return;
vis[step][]=x;
vis[step][]=y;
if(step==n*m){
flag=;
ans=step;
return;
}
for(int i=;i<;++i){
map[y][x]=;
dfs(y+dy[i],x+dx[i],step+);
map[y][x]=;
}
return;
}
int main()
{
int t,o=;scanf("%d",&t);
while(t--)
{
flag=;
scanf("%d%d",&n,&m);
memset(vis,,sizeof(vis));
memset(map,,sizeof(map));
ans=;
dfs(,,);
printf("Scenario #%d:\n",o++);
if(ans!=n*m){
printf("impossible");
}
else{
for(int i=;i<=ans;++i){
printf("%c",vis[i][]+'A'-);
printf("%d",vis[i][]);
}
}
printf("\n");
if(t!=) printf("\n");
}
return ;
}
#include<cstdio>
.#include<cstring>
.#include<algorithm>
.using namespace std;
.
.int path[][], vis[][], p, q, cnt;
.bool flag;
.
.int dx[] = {-, , -, , -, , -, };
.int dy[] = {-, -, -, -, , , , };
.
.bool judge(int x, int y)
.{
. if(x >= && x <= p && y >= && y <= q && !vis[x][y] && !flag)
. return true;
. return false;
.}
.
.void DFS(int r, int c, int step)
.{
. path[step][] = r;
. path[step][] = c;
. if(step == p * q)
. {
. flag = true;
. return ;
. }
. for(int i = ; i < ; i++)
. {
. int nx = r + dx[i];
. int ny = c + dy[i];
. if(judge(nx,ny))
. {
.
. vis[nx][ny] = ;
. DFS(nx,ny,step+);
. vis[nx][ny] = ;
. }
. }
.}
.
.int main()
.{
. int i, j, n, cas = ;
. scanf("%d",&n);
. while(n--)
. {
. flag = ;
. scanf("%d%d",&p,&q);
. memset(vis,,sizeof(vis));
. vis[][] = ;
. DFS(,,);
. printf("Scenario #%d:\n",++cas);
. if(flag)
. {
. for(i = ; i <= p * q; i++)
. printf("%c%d",path[i][] - + 'A',path[i][]);
. }
. else
. printf("impossible");
. printf("\n");
. if(n != )
. printf("\n");
. }
. return ;
.}
POJ 2488 深搜dfs、的更多相关文章
- POJ 1321 深搜dfs
思路其实挺简单的,为什么我想不到呢!!! 原因分析:(1)题目还是做少了 (2)做题目的时候在放音乐 (3)最近脑袋都不愿意想思路总是想一些无用的 改进:(1)以后做题目坚决不开音乐,QQ直接挂隐身 ...
- 深搜(DFS),Image Perimeters
题目链接:http://poj.org/problem?id=1111 解题报告: 1.这里深搜有一点要注意,对角线上的点,如果为'.',则total不应该增加,因为这不是他的边长. #include ...
- 图的遍历 之 深搜dfs
DFS 遍历 深度优先搜索是一个递归过程,有回退过程. 对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1:再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2: ...
- HDU 2553 N皇后问题(深搜DFS)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 深搜(DFS),回溯,Fire Net
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2 解题报告: 这里的深搜有一点不同,就是,在深搜每一个点时,都要深搜每 ...
- 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...
- 【深搜(DFS)-例题-踏青】-C++
描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...
- POJ 1190(深搜)
http://poj.org/problem?id=1190 又有好久没做搜索的题了,没想到做一个卡了我那么久,想哭啊. 一个中文题,思路呢也就是搜索呗,一层一层往上面搜,不过这里有两个比较重要的地方 ...
- poj1321 棋盘问题(深搜dfs)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1321">http://poj.org/prob ...
随机推荐
- 安装 cx_Oracle
1.下载 oracle client instant 和 sdk, 全部解压到 /opt/instantclient_11_2/ http://www.oracle.com/technetwor ...
- MyEclipse编写ExtJS卡死问题解决方法
MyEclipse 8.6 在 jsp 中编写 ExtJS时,会出现卡死现象,让人甚是头疼.网上找了很多方法,折腾半天,还是不管用. 什么MyEclipse 优化,Validation 取消,MyE ...
- 麻烦把JS的事件环给我安排一下
上次大家跟我吃饱喝足又撸了一遍PromiseA+,想必大家肯定满脑子想的都是西瓜可乐...... 什么西瓜可乐!明明是Promise! 呃,清醒一下,今天大家搬个小板凳,听我说说JS中比较有意思的事件 ...
- Framework7 无限滚动
html结构 <div class="page"> <div class="page-content infinite-scroll"> ...
- <> 是不等号的意思
<> 是不等号的意思,也有的语言可以写作:# 或者 != 1.=表示 等于: 2.<> 表示不等于:(注释:在 SQL 的一些版本中,该操作符可被写成 !=): 3.> ...
- 设备 VMnet0 上的网络桥接当前未在运行。
早上,我打开我的虚拟机,却发现一个问题, 桥接网络怎么都连接不上. 报的是如下的错误 ------------------------------ 设备 VMnet0 上的网络桥接当前未在运行.该虚拟 ...
- 【JZOJ4845】【NOIP2016提高A组集训第5场11.2】寻找
题目描述 "我有个愿望,我希望穿越一切找到你." 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三 ...
- [Java]ITOO初步了解 标签: javajbosstomcat 2016-05-29 21:14 3367人阅读 评论(34)
开始接触Java的ITOO了,这两天在搭环境,结果发现,哇,好多没接触过的东西,先写篇博客来熟悉一下这些工具. JBoss 基于Tomcat内核,青胜于蓝 Tomcat 服务器是一个免费的开放 ...
- C/S和B/S交互 2016-03-19 11:27 1275人阅读 评论(30) 收藏
最近一直在做C/S的项目,每天都超忙,抽个时间写篇博客,之前一直做C/S项目就是各种窗体,各种控件,拖来拖去,然后点进去写方法,做BS的时候呢,因为一直使用的是mvc,所以就是经常手写代码,或者拖引用 ...
- 《C程序设计语言》笔记(二)
四:函数与程序结构 1:函数之间的通信可以通过参数.函数返回值以及外部变量进行. 2:如果函数定义中省略了返回值类型,则默认为int类型.如果没有函数原型,则函数将在第一次出现的表达式中被隐式声明,比 ...