UVA 227
来源:互联网 发布:学汉语翻译软件 编辑:程序博客网 时间:2024/05/22 14:40
这道题思路很简单,就是对我来说坑太多��。。。
害我改了又改。。。一开始是wa,后来re(数组开小了),之后pe(换行写的地方不对),不过还是挺有收获的,坑踩多了就好了。。。
话说那个一开始用的break,后来终于明白自己傻蛋了,break的话,s其实是会继续输入的,这样就会影响到下一个矩阵拼图了,所以得用continue继续把规则字符串读完才行。
#include <iostream>#include "cstdio"#include "cstring"using namespace std;int main(){ char N[100][100]; int temp = 0; char s; int p1 = 0,p2 = 0,p = 0; bool flag; while (true){ p++; flag = true; p1 = 0,p2 = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { scanf("%c",&N[i][j]); if (N[i][j] == 'Z'){ return 0; } if (N[i][j] == ' '){ p1 = i; p2 = j; } } if(i < 4) getchar(); } while ( scanf("%c",&s) ){ if (s == '0') break; if (s == 'A'){ if(p1 == 0) flag = false;// if(!flag){// break;// } N[p1][p2] = N[p1-1][p2]; N[p1-1][p2] = ' '; p1--; continue; } else if (s == 'B'){ if (p1 == 4) flag = false;// if(!flag){// break;// } N[p1][p2] = N[p1+1][p2]; N[p1+1][p2] = ' '; p1++; continue; } else if (s == 'R'){ if(p2 == 4) flag = false;// if(!flag){// break;// } N[p1][p2] = N[p1][p2+1]; N[p1][p2+1] = ' '; p2++; continue; } else if (s == 'L'){ if (p2 == 0) flag = false;// if(!flag){// break;// } N[p1][p2] = N[p1][p2-1]; N[p1][p2-1] = ' '; p2--; continue; } } getchar(); if (p != 1) printf("\n"); printf("Puzzle #%d:\n",p); if (flag){ for (int k = 0; k < 5; k++) { for (int i = 0; i < 5; i++) { printf("%c",N[k][i]); if (i < 4) printf(" "); } printf("\n"); } } else{ printf("This puzzle has no final configuration.\n"); } } return 0;}
阅读全文
0 0
- UVA 227
- uva 227
- UVa 227
- UVA-227
- UVA 227
- UVA-227
- UVA 227
- UVA 227
- uva 227
- UVA 227
- UVA 227
- UVa 227
- uva 227
- UVa 227 - Puzzle
- UVa 227 - Puzzle
- Uva-227-Puzzle
- UVa 227 Puzzle
- UVa 227 模拟
- 计算机网络基础知识
- shared_ptr模拟代码
- Console用于reverseshell
- C++断点异常
- Datepicker和timerPicker的使用以及监听
- UVA 227
- 新版struts2.5与老版在配置上的异同与注意事项
- C语言模拟实现库函数atoi
- js小知识
- LMS最小均方算法
- java jdbc 两层轻量封装
- 《Unix环境高级编程》 总结 (三)
- bzoj 1012: [JSOI2008]最大数maxnumber
- Laravel基础-中间件