POJ 2488 DFS
2015-08-13 10:34
239 查看
DES:给一个n行m列的棋盘。马以L型走。问能否从某一位置开始走完棋盘上的每个位置。若能继续输出字典序最小的一条路径。
很典型的dfs。搜的时候就按照字典序从小到大的顺序。搜到第一条路径时停止搜索输出路经就好了。感觉dfs很机智。WA了几次都是因为保存答案那里没有回溯。。。。。。。。。。一开始还以为没搞清楚行和列哪个是用字母表示的.....T_T ....读题很难的.....
A Knight's Journey
View Code
很典型的dfs。搜的时候就按照字典序从小到大的顺序。搜到第一条路径时停止搜索输出路经就好了。感觉dfs很机智。WA了几次都是因为保存答案那里没有回溯。。。。。。。。。。一开始还以为没搞清楚行和列哪个是用字母表示的.....T_T ....读题很难的.....
A Knight's Journey
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; bool flag; int vis[30][30]; int x[81], y[81]; int n, m; int dx[] = { -1, 1, -2, 2, -2, 2, -1, 1 }, dy[] = { -2, -2, -1, -1, 1, 1, 2, 2 }; //注意顺序 int cnt; void dfs(int xxx, int yyy) { if (flag == false) return; if (cnt == 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[cnt] = xx; y[cnt++] = yy; dfs(xx, yy); cnt--; vis[xx][yy] = 0; } } } /*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 = 0; while(t--) { casee++; cin >> n >> m; flag = true; cout << "Scenario #" << casee << ':' << endl; for (int j=0; j<m; ++j) { for (int i=0; i<n; ++i) { memset(vis, 0, sizeof(vis)); memset(x, 0, sizeof(x)); memset(y, 0, sizeof(y)); vis[i][j] = 1; x[0] = i; y[0] = j; cnt = 1; dfs(i, j); //dfs2(i, j, 1); if (!flag) break; } if (!flag) break; } if (flag) cout << "impossible\n\n"; } return 0; }
View Code
相关文章推荐
- 8-13笔记-安卓兼容
- HDU 5373
- 天声人語
- view 跨activity的动画
- POJ---1080-Human Gene Functions
- linux系统负载(cat /proc/loadavg)
- IE8中按下回车键之后自动出现提交
- 读取配置文件的信息
- 九度 Online Judge 算法 刷题 题目1031:xxx定律
- 遍历二叉树的各种操作(非递归遍历)
- Hdu oj 1017 A Mathematical Curiosity
- 一个Spring Boot, JWT,AugularJS接口安全验证的简单例子
- Unity3D系列1 : foreach对于性能到底有没有影响
- 拥抱Material Design!你的世界里不应该只有Bootstrap
- Matlab数值计算最简单的一个例子——指数衰减
- 一些面经3-链接汇总
- 偷懒省事有工具啊
- UITableView错误 ‘unable to dequeue a cell with identifier Cell'
- doget与dopost
- 如何使用source insight