题目:

题目浏览传送门

题意:

给出一个5*5的方格,里边有一个格子是空的,现在给出一串指令,A->空格向上移动,B->空格向下移动,R->空格向右移动,L->空格向左移动。

输出移动后的结果。

思路:

直接上模拟就好了,不过就是输入处理有点恶心,最好用scanf和printf来处理输入输出。

1、空格移动出界和出现不是‘A’、‘B’、‘R’、‘L’中的指令,这两种情况都算是“This puzzle has no final configuration.”。

2、另外在处理指令的时候,遇到1中的情况只要标记一下就好了,最终统一在‘0’的位置退出循环。(WA到怀疑人生)

例如这个样例:

AAAAA
BBBBB
NNNNN
JJJJJ
UUUU
AQ
0
Z

3、输出两两之间用一个空行隔开。

代码:

  1. #include <bits/stdc++.h>
  2. #define inf 0x3f3f3f3f
  3. #define FRE() freopen("in.txt","r",stdin)
  4. using namespace std;
  5. typedef long long ll;
  6. const int maxn = 5e3+;
  7. int mp[][];
  8.  
  9. void toSwap(int& a,int& b){
  10. int t = a;
  11. a = b,b = t;
  12. }
  13.  
  14. bool Move(char op, int& r,int& c) {
  15. if(op=='A') {
  16. if(r- == )
  17. return false;
  18. toSwap(mp[r][c],mp[r-][c]);
  19. r--;
  20. return true;
  21. } else if(op=='B') {
  22. if(r+ == )
  23. return false;
  24. toSwap(mp[r][c],mp[r+][c]);
  25. r++;
  26. return true;
  27. } else if(op == 'R') {
  28. if(c+ == )
  29. return false;
  30. toSwap(mp[r][c],mp[r][c+]);
  31. c++;
  32. return true;
  33. } else if(op == 'L'){
  34. if(c- == )
  35. return false;
  36. toSwap(mp[r][c],mp[r][c-]);
  37. c--;
  38. return true;
  39. }
  40. return false;
  41. }
  42.  
  43. void check() {
  44. for(int i = ; i<=; i++) {
  45. for(int j = ; j<=; j++) {
  46. if(j!=)
  47. printf(" ");
  48. printf("%c",mp[i][j]+'A');
  49. }
  50. printf("\n");
  51. }
  52. }
  53.  
  54. int main() {
  55. //FRE();
  56. char str[];
  57. int cnt = ;
  58. while() {
  59. int len;
  60. for(int i = ; i<=; i++) {
  61. gets(str);
  62. len = strlen(str);
  63. if(i == && len == && str[] == 'Z'){
  64. return ;
  65. }
  66. for(int j = ; j<len; j++) {
  67. mp[i][j+] = str[j]-'A';
  68. }
  69. if(len == ){
  70. mp[i][] = -;
  71. }
  72. }
  73. int r,c;
  74. for(int i = ; i<=; i++) {
  75. for(int j = ; j<=; j++) {
  76. if(mp[i][j] < ) {
  77. r = i;
  78. c = j;
  79. }
  80. }
  81. }
  82. //check();
  83. char op[];
  84. bool ok = true;
  85. while() {
  86. bool isend = false;
  87. gets(op);
  88. //cout<<op<<" GG "<<endl;
  89. len = strlen(op);
  90. for(int i = ; i<len; i++) {
  91. //cout<<op[i]<<endl;
  92. if(op[i] == '') {
  93. isend = true;
  94. }
  95. else if(!Move(op[i],r,c)){
  96. ok = false;
  97. }
  98. }
  99. if(isend) {
  100. break;
  101. }
  102. }
  103. //cout<<"HH"<<endl;
  104. if(cnt != ){
  105. printf("\n");
  106. }
  107. if(!ok){
  108. printf("Puzzle #%d:\n",++cnt);
  109. printf("This puzzle has no final configuration.\n");
  110. }else {
  111. printf("Puzzle #%d:\n",++cnt);
  112. check();
  113. }
  114. }
  115. return ;
  116. }
  117. /*
  118. PutIn:
  119. TRGSJ
  120. XDOKI
  121. M VLN
  122. WPABE
  123. UQHCF
  124. ARRBBL0
  125. ABCDE
  126. FGHIJ
  127. KLMNO
  128. PQRS
  129. TUVWX
  130. AAA
  131. LLLL0
  132. ABCDE
  133. FGHIJ
  134. KLMNO
  135. PQRS
  136. TUVWX
  137. AAAAABBRRRLL0
  138. Z
  139. PutOut:
  140. Puzzle #1:
  141. T R G S J
  142. X O K L I
  143. M D V B N
  144. W P A E
  145. U Q H C F
  146. Puzzle #2:
  147. A B C D
  148. F G H I E
  149. K L M N J
  150. P Q R S O
  151. T U V W X
  152. Puzzle #3:
  153. This puzzle has no final configuration.
  154. */

UVA-227 Puzzle(模拟)的更多相关文章

  1. UVA 227 Puzzle(基础字符串处理)

    题目链接: https://cn.vjudge.net/problem/UVA-227 /* 问题 输入一个5*5的方格,其中有一些字母填充,还有一个空白位置,输入一连串 的指令,如果指令合法,能够得 ...

  2. uva 227 Puzzle

     Puzzle  A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained ...

  3. UVA 227 Puzzle - 输入输出

    题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...

  4. uva 227 Puzzle (UVA - 227)

    感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...

  5. Puzzle UVA - 227 PE代码求大佬指点

    ​ A children's puzzle that was popular 30 years ago consisted of a 5×5 frame which contained 24 smal ...

  6. UVA 246 - 10-20-30 (模拟+STL)

    UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20 ...

  7. ZOJ 2610 Puzzle 模拟

    大模拟:枚举6个方向.检查每一个0是否能移动 Puzzle Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Georgie likes ...

  8. UVa 11988 (数组模拟链表) Broken Keyboard (a.k.a. Beiju Text)

    题意: 模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键. 问最终屏幕上显示的结果是什么字符串. 分析: 如果在数组用大量的移动字符必然很耗时. ...

  9. UVA 277 Puzzle

    题意:输入5x5的字符串,输入操作,要求输出完成操作后的字符串. 注意:①输入的操作执行可能会越界,如果越界则按题目要求输出不能完成的语句. ②除了最后一次的输出外,其他输出均要在后面空一行. ③操作 ...

  10. UVa 1611 (排序 模拟) Crane

    假设数字1~i-1已经全部归位,则第i到第n个数为无序区间. 如果i在无序区间的前半段,那么直接将i换到第i个位置上. 否则先将i换到无序区间的前半段,再将i归位.这样每个数最多操作两次即可归位. # ...

随机推荐

  1. Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题

    问题详情如下: 解决办法 这个是由于mysql-connector-java的bug造成的,出错时我用的是mysql-connector-java-5.1.10-bin.jar,更新成mysql-co ...

  2. Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】

    本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...

  3. shell脚本自动更新git

    gitpull.sh #!/bin/bash cd /home/wwwroot/default/mouse && git pull cd /home/wwwroot/default/s ...

  4. [bzoj3073]Journeys

    https://www.zybuluo.com/ysner/note/1295471 题面 \(Seter\)建造了一个很大的星球,他准备建造\(N\)个国家和无数双向道路.\(N\)个国家很快建造好 ...

  5. IDEA kafka producer数据输出缓慢 和 kafka consumer 报错的处理

    问题1. IDEA 中Kafa_Producer程序数据输出缓慢 但不报错 问题2. Kafa_Consumer程序报错: 17/11/10 11:31:11 ERROR ReceiverTracke ...

  6. http-2.4

    http-2.4 1)新特性 (1)MPM 支持运行为DSO 机制:以模块形式按需加载 (2)event MPM 生产环境可用 (3)异步读写机制 (4)支持每模块及每目录的单独日志级别定义 (5)每 ...

  7. bzoj 4300: 绝世好题【dp】

    设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i-1中1<<j&a[i]!=0的位+1转移来 然后i维是不需要的,答案直接在dp过程中去max即可 #i ...

  8. [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(2)添加一个 App Store 图标

    您必须提供一个 App Store 图标,用于在 App Store 中的不同部分展示您的 App.请遵照 Human Interface Guidelines(<人机界面准则>)创建您的 ...

  9. sshd服务器搭建管理和防止暴力破解

    1.1 Linux服务前期环境准备,搭建一个RHEL7环境 1.2 sshd服务安装-ssh命令使用方法 1.3 sshd服务配置和管理 1.4 防止SSHD服务暴力破解的几种方式 1.1 Linux ...

  10. LN : leetcode 3 Longest Substring Without Repeating Characters

    lc 3 Longest Substring Without Repeating Characters 3 Longest Substring Without Repeating Characters ...