博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2488解题报告
阅读量:4204 次
发布时间:2019-05-26

本文共 1385 字,大约阅读时间需要 4 分钟。

这是道深搜的题目,不过需要回溯。

很早就看了,所以没出啥问题。

“Slyar:说一下题目大意。给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。

"马的遍历"是一道经典回溯题,当然还是DFS...这题有3个要密切注意的地方:

1、题目要求以"lexicographically"方式输出,也就是字典序...一开始没看懂这个词结果WA了N次...要以字典序输出路径,那么方向数组就要以特殊的顺序排列了...这样只要每次从dfs(1,1)开始搜索,第一个成功遍历的路径一定是以字典序排列...

2、国际象棋的棋盘,横行为字母,表示横行坐标的是y;纵行为数字,表示纵行的坐标是x...一开始又搞反了...

3、虽然题目没说,但是这道题最后一组数据后是没有空行的...否则会PE...

其他内容注释里很清楚了...优化了代码,0MS...”

#include 
using namespace std;const int numdirect = 8;int xstep[8] = {-2, -2, -1, -1, 1, 1, 2, 2};int ystep[8] = {-1, 1, -2, 2, -2, 2, -1, 1};const int maxsize = 26;bool visited[maxsize][maxsize];int route[maxsize * maxsize][2];int cnt;int p, q;bool isinmap(int x, int y){ return x >= 0 && x < p && y >=0 && y < q;}void dfs(int x, int y, bool &flag){ visited[x][y] = true; route[cnt][0] = x; route[cnt][1] = y; cnt++; if(cnt == p * q) { flag = true; return; } int nx, ny; for(int i = 0; i < numdirect; ++i) { nx = x + xstep[i]; ny = y + ystep[i]; if(isinmap(nx, ny) && !visited[nx][ny]) { //visited[nx][ny] = true; //route[cnt][0] = i; //route[cnt][1] = j; //cnt++; dfs(nx, ny, flag); if(flag) return; //cnt--; //visited[nx][ny] = false; } } cnt--; visited[x][y] = false;}int main(){ int n; cin>>n; for(int i = 0; i < n; ++i) { cnt = 0; memset(visited, false, maxsize * maxsize); //cnt = 0; cin>>q>>p; bool flag = false; dfs(0, 0, flag); cout<<"Scenario #"<

转载地址:http://ixxli.baihongyu.com/

你可能感兴趣的文章
【Error】zsh历史记录丢失
查看>>
解析漏洞总结
查看>>
有趣的二进制 读书笔记
查看>>
记一次vmware磁盘扩容part2:真正扩展根目录
查看>>
【Error】zsh: corrupt history file /home/myusername/.zsh_history
查看>>
记一次编译linux 2.6 和4.10内核源码
查看>>
【Error】couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) [duplicate]
查看>>
qemu 文件系统制作:自己制作根目录和应用程序 + busybox
查看>>
关闭CSDN广告必备插件:adblock plus
查看>>
【pwnable.kr】fd
查看>>
【pwnable.kr】 collision
查看>>
【pwnable.kr】bof
查看>>
【pwnable.kr】flag
查看>>
【pwnable.kr】 passcode
查看>>
【pwnable.kr】input
查看>>
【Windows C++】调用powershell上传指定目录下所有文件
查看>>
【Error】ropgadget依赖选项capstone报错ImportError: ERROR: fail to load the dynamic library.
查看>>
【Error】西部数据磁盘插上不显示盘符
查看>>
【Windows C++】powershell 获取chrome密码并上传
查看>>
【Error】Kitematic - VirtualBox is not installed. Please install it via the Docker Toolbox.
查看>>