POJ2488
2016-07-22 18:56
288 查看
题目不难,马走日。特别需要注意的是按照字典顺序输出,而且,一定一定注意的是,输出结果之后,不仅要换行,还要隔一行,否则提交之后会PE的。
// poj2488.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; int map[10][10]; int labelX[16]; char labelY[16]; int bonus[16] = {-1,-2,1,-2,-2,-1,2,-1,-2,1,2,1,-1,2,1,2}; int n,col,row; bool dfs(int x, int y, int totalStep){ int newX, newY; if(totalStep == col*row-1){ labelX[totalStep] = x + 1; labelY[totalStep] = y + 'A'; return true; } for(int i=0; i<16; i+=2){ newX = x + bonus[i]; newY = y + bonus[i+1]; if(newX >= 0 && newY >= 0 && newX < col && newY < row && !map[newX][newY]){ map[newX][newY] = 1; labelX[totalStep] = x + 1; labelY[totalStep] = y + 'A'; if(dfs(newX,newY,totalStep+1)) return true; map[newX][newY] = 0; } } return false; } void print(){ for(int i=0; i<col*row; i++){ cout << labelY[i] << labelX[i]; } cout << "\n"; } int main() { cin >> n; for(int i=1; i<=n; i++){ cin >> col; cin >> row; printf("Scenario #%d:\n",i); memset(map,0,sizeof(map)); map[0][0] = 1; if(dfs(0,0,0)){ print(); }else{ cout << "impossible" << endl; } cout << "\n"; } return 0; }
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2159 Ancient Cipher
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- [数论]poj2635__The Embarrassed Cryptographer
- [二分图匹配]poj2446__Chessboard
- POJ1050 最大子矩阵和
- 用单调栈解决最大连续矩形面积问题