DES:给一个n行m列的棋盘。马以L型走。问能否从某一位置开始走完棋盘上的每个位置。若能继续输出字典序最小的一条路径。

很典型的dfs。搜的时候就按照字典序从小到大的顺序。搜到第一条路径时停止搜索输出路经就好了。感觉dfs很机智。WA了几次都是因为保存答案那里没有回溯。。。。。。。。。。一开始还以为没搞清楚行和列哪个是用字母表示的.....T_T ....读题很难的.....

A Knight's Journey

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std; bool flag;
int vis[][];
int x[], y[];
int n, m;
int dx[] = { -, , -, , -, , -, },
dy[] = { -, -, -, -, , , , }; //注意顺序
int cnt; void dfs(int xxx, int yyy)
{
if (flag == false) return;
if (cnt == n*m)
{
for (int i=; i<cnt; ++i)
{
cout << char(y[i]+'A') << char(x[i]+'');
}
cout << endl << endl;
flag = false;
return;
} for (int i=; i<; ++i)
{
int xx = xxx+dx[i];
int yy = yyy+dy[i];
if (xx>= && xx<n && yy>= && yy<m && !vis[xx][yy])
{
vis[xx][yy] = ;
x[cnt] = xx;
y[cnt++] = yy;
dfs(xx, yy);
cnt--;
vis[xx][yy] = ;
}
}
} /*void dfs2(int xxx, int yyy, int num)
{
if (flag == false) return;
if (num == n*m)
{
for (int i=0; i<cnt; ++i)
{
cout << char(y[i]+'A') << char(x[i]+'1');
}
cout << endl << endl;
flag = false;
return;
} for (int i=0; i<8; ++i)
{
int xx = xxx+dx[i];
int yy = yyy+dy[i];
if (xx>=0 && xx<n && yy>=0 && yy<m && !vis[xx][yy])
{
vis[xx][yy] = 1;
x[num] = xx;
y[num] = yy;
dfs2(xx, yy, num+1);
vis[xx][yy] = 0;
}
}
}*/ int main()
{
int t;
cin >> t;
int casee = ;
while(t--)
{
casee++;
cin >> n >> m;
flag = true;
cout << "Scenario #" << casee << ':' << endl;
for (int j=; j<m; ++j)
{
for (int i=; i<n; ++i)
{
memset(vis, , sizeof(vis));
memset(x, , sizeof(x));
memset(y, , sizeof(y));
vis[i][j] = ;
x[] = i;
y[] = j;
cnt = ;
dfs(i, j);
//dfs2(i, j, 1);
if (!flag) break;
}
if (!flag) break;
}
if (flag)
cout << "impossible\n\n";
}
return ;
}

POJ 2488 DFS的更多相关文章

  1. POJ 2488 -- A Knight's Journey(骑士游历)

    POJ 2488 -- A Knight's Journey(骑士游历) 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. 经典的“骑士游历”问题 ...

  2. poj 2488 A Knight's Journey( dfs )

    题目:http://poj.org/problem?id=2488 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. #include <io ...

  3. poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】

    题目地址:http://poj.org/problem?id=2488 Sample Input 3 1 1 2 3 4 3 Sample Output Scenario #1: A1 Scenari ...

  4. POJ 2488 A Knight's Journey【DFS】

    补个很久之前的题解.... 题目链接: http://poj.org/problem?id=2488 题意: 马走"日"字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条 ...

  5. poj 2488 A Knight&#39;s Journey(dfs+字典序路径输出)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem? id=2488 ----- ...

  6. POJ 2488 A Knight's Journey (回溯法 | DFS)

    题目链接:http://poj.org/problem?id=2488 题意: 在国际象棋的题盘上有一个骑士,骑士只能走“日”,即站在某一个位置,它可以往周围八个满足条件的格子上跳跃,现在给你一个p ...

  7. POJ 2488 A Knight's Journey(DFS)

    A Knight's Journey Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 34633Accepted: 11815 De ...

  8. [poj]2488 A Knight's Journey dfs+路径打印

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45941   Accepted: 15637 Description Bac ...

  9. 搜索 || DFS || POJ 2488 A Knight's Journey

    给一个矩形棋盘,每次走日字,问能否不重复的走完棋盘的每个点,并将路径按字典序输出 *解法:按字典序输出路径,因此方向向量的数组按字典序写顺序,dfs+回溯,注意flag退出递归的判断,并且用pre记录 ...

随机推荐

  1. 20145127 《Java程序设计》第五次实验报告

    实验简述: 在本周,我们进行了Java的第五次试验,本次实验的主要内容是结对编程.本次实验的大体过程是: 1.先进行Java的客户端与服务端的代码编写.结对是两个人,一人负责客户端,一人负责服务端. ...

  2. B-树 B+树 B*树

    区分B树,B-树 有的文章说二叉查找树(Binary Search Tree,BST)就是B树,这个我总结来说是不对的 B树和B-树是同一种树,只不过英语中B-tree被中国人翻译成了B-树,让人以为 ...

  3. newcode wyh的吃鸡(优势队列+BFS)题解

    思路: 要用优势队列,因为有的+2,有的+1,所以队列中的步长是不单调的,所以找到一个答案但不一定最小,所以用优势队列把小的放在队首. 要记录状态,所以开了三维,题目和昨天做的那道小明差不多 vis开 ...

  4. hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP

    题目链接: https://www.cnblogs.com/Draymonder/p/9536681.html 同上一篇文章,只是 需要记录最大值的开始和结束的位置 #include <iost ...

  5. 文件查找:locate、find

    文件查找:在文件系统上查找符合条件的文件: locate, find 非实时查找(数据库查找):locate  //不是遍历系统文件,把当前系统目录下的所有文件抽取出来制作成一个索引(或者叫数据库), ...

  6. nohup 日志切割

    最近遇到日志切割的问题,即程序是通过命令: nohup python *.py & 放到后台执行的,这样程序的日志输出到了nohup自动生成的nohup.out文件. 问题就来了,nohup. ...

  7. UVa 1629 切蛋糕(记忆化搜索)

    https://vjudge.net/problem/UVA-1629 题意: 有一个n行m列的网格蛋糕上有一些樱桃.每次可以用一刀沿着网格线把蛋糕切成两块,并且只能直切不能拐弯.要求最后每一块蛋糕上 ...

  8. UVa 1614 奇怪的股市

    https://vjudge.net/problem/UVA-1614 题意:输入一个长度为n的序列a,满足1<=ai<=i,要求确定每个数的正负号,使得所有数的总和为0. 思路:贪心部分 ...

  9. C#修饰符说明

    方法不加访问修饰符默认的是 private 类不加访问修饰答默认的是 internal //////////////////////////////////////////////////////// ...

  10. Python - PIL-pytesseract-tesseract验证码识别

    N天前实现了简单的验证识别,这玩意以前都觉得是高大上的东西,一直没有去研究,这次花了点时间研究了一下,当然只是一些基础的东西,高深的我也不会,分享一下给大家吧. 关于python验证码识别库,网上主要 ...