UVa 227 - Puzzle
2015-02-23 14:01
260 查看
题目:给你一个字母组成的矩阵,其中有一个空位,给你移动的规则(类似平面的一种拼图游戏);
问是否操作合法,合法时输出移动后的结果。
说明:模拟。直接利用二位数组模拟即可。
分析:年后的第一题(⊙v⊙)。
问是否操作合法,合法时输出移动后的结果。
说明:模拟。直接利用二位数组模拟即可。
分析:年后的第一题(⊙v⊙)。
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; char maps[5][7]; char cmd[1001]; int main() { int cases = 0; while (gets(maps[0])) { if (maps[0][0] == 'Z') break; for (int i = 1 ; i < 5 ; ++ i) gets(maps[i]); int b_x = 0,b_y = 0; for (int i = 0 ; i < 5 ; ++ i) for (int j = 0 ; j < 5 ; ++ j) if (maps[i][j] == ' ') { b_x = i;b_y = j; break; } int count = 0; while (~scanf("%c",&cmd[count])) if (cmd[count] != '0') count ++; else break; cmd[count] = 0;getchar(); int flag = 0,x = b_x,y = b_y; for (int i = 0 ; cmd[i] ; ++ i) { switch(cmd[i]) { case 'A': x = b_x-1;y = b_y; break; case 'B': x = b_x+1;y = b_y; break; case 'L': x = b_x;y = b_y-1; break; case 'R': x = b_x;y = b_y+1; break; } if (x < 0 || x > 4 || y < 0 || y > 4) { flag = 1;break; }else { maps[b_x][b_y] = maps[x][y]; maps[x][y] = ' '; b_x = x; b_y = y; } } if (cases ++) printf("\n"); printf("Puzzle #%d:\n",cases); if (flag) printf("This puzzle has no final configuration.\n"); else { for (int i = 0 ; i < 5 ; ++ i) { printf("%c",maps[i][0]); for (int j = 1 ; j < 5 ; ++ j) printf(" %c",maps[i][j]); printf("\n"); } } } return 0; }
相关文章推荐
- 紫书章三习题5——UVA 227 Puzzle
- UVa227-Puzzle
- Uva227-Puzzle
- UVa 227 Puzzle
- 例题 3-5 谜题 uva227 Puzzle
- Puzzle UVA - 227
- 紫书章三习题5——UVA 227 Puzzle
- 习题3-5 Puzzle UVa227
- UVA - 227 Puzzle
- UVa227 谜题 Puzzle
- UVa 227 Puzzle(谜题)
- 小紫书 习题 3-5(UVA 227) 谜题(Puzzle)
- 【习题3-5】 UVA - 227 Puzzle
- [UVA227]Puzzle
- 紫书章三习题5——UVA 227 Puzzle
- (UVA)227 - Puzzle
- Uva227 Puzzle 谜题 (java版本)
- 【UVa】[227]Puzzle
- Puzzle,UVa227
- UVa 227 - Puzzle