POJ - 2488 A Knight's Journey
来源:互联网 发布:linux源码编译mysql 编辑:程序博客网 时间:2024/05/29 18:54
1.题面
http://poj.org/problem?id=2488
2.题意
搜,搜,搜,搜,搜,按最小字典序搜
3.思路
注意最小字典序
4.代码
/***************************************************************** > File Name: cpp_acm.cpp > Author: Uncle_Sugar > Mail: uncle_sugar@qq.com > Created Time: Wed 10 Aug 2016 19:07:02 CST*****************************************************************/# include <cstdio># include <cstring># include <cctype># include <cmath># include <cstdlib># include <climits># include <iostream># include <iomanip># include <set># include <map># include <vector># include <stack># include <queue># include <algorithm>using namespace std;# define rep(i,a,b) for (i=a;i<=b;i++)# define rrep(i,a,b) for (i=b;i>=a;i--)template<class T>void PrintArray(T* first, T* last, char delim=' '){ for (;first!=last;first++) cout << *first << (first+1==last?'\n':delim);}const int debug = 1;const int size = 26 + 10 ; const int INF = INT_MAX>>1;typedef long long ll;typedef pair<int,int> pir;/*1.see the size of the input data before you select your algorithm 2.cin&cout is not recommended in ACM/ICPC3.pay attention to the size you defined, for instance the size of edge is double the size of vertex*/int n,m;int vis[size][size];int dx[8] = {-1,1,-2,2,-2,2,-1,1};int dy[8] = {-2,-2,-1,-1,1,1,2,2};bool flag = false;vector<pir> ans;vector<pir> path;bool inrange(int x, int y){return x>=0&&x<n&&y>=0&&y<m;}void dfs(int x,int y,int cnt){if (cnt==m*n){flag = true;ans = path;return;}for (int i=0;i<8&&flag==false;i++){int nx = x + dx[i];int ny = y + dy[i];if (inrange(nx,ny)&&!vis[nx][ny]){vis[nx][ny] = 1;path.push_back(pir(nx,ny));dfs(nx, ny, cnt+1);path.pop_back();vis[nx][ny] = 0;}}}int main(){/*std::ios::sync_with_stdio(false);cin.tie(0);*/int i,j;int T;scanf("%d",&T);int ncase = 0;while (T--){ans.clear(); path.clear();memset(vis,0,sizeof(vis));flag = false;scanf("%d%d",&n,&m);path.push_back(pir(0,0));vis[0][0] = 1;dfs(0,0,1);printf("Scenario #%d:\n",++ncase);if (flag){for (i=0;i<ans.size();i++){int x = ans[i].first;int y = ans[i].second;printf("%c%d",y+'A',x+1);}printf("\n");}else {printf("impossible\n");}printf("\n");}return 0;}
0 0
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey DFS
- Poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey (dfs)
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488(A Knight's Journey)
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- 删除同文件夹下相同的文件(HashSet和file)
- [DP] HDU5819 Knights
- 设计模式总结之Interpreter Pattern(解释器模式)
- 设计模式-行为型-访问者模式(Visitor)
- Eclipse 4.6 Neon 的Tomcat插件安装方法
- POJ - 2488 A Knight's Journey
- python的一个对比
- zzuliOJ 1908:小火山的围棋梦想(DFS+小思维)
- UVALive 7327 Digit Division
- 我的ImageMagick使用心得
- GATT协议及蓝牙核心系统结构
- 小火山的计算能力(字符串)
- java多线程---生产者消费者模式
- 系统函数I/O操作与标准库函数流操作