Puzzle 

A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained 24 small squares of equal size. A unique letter of the alphabet was printed on each small square. Since there were only 24 squares within the frame, the frame also contained an empty position which was the same size as a small square. A square could be moved into that empty position if it were immediately to the right, to the left, above, or below the empty position. The object of the puzzle was to slide squares into the empty position so that the frame displayed the letters in alphabetical order.

The illustration below represents a puzzle in its original configuration and in its configuration after the following sequence of 6 moves:

 1) 		 The square above the empty position moves.

2) The square to the right of the empty position moves.

3) The square to the right of the empty position moves.

4) The square below the empty position moves.

5) The square below the empty position moves.

6) The square to the left of the empty position moves.

Write a program to display resulting frames given their initial configurations and sequences of moves.

Input

Input for your program consists of several puzzles. Each is described by its initial configuration and the sequence of moves on the puzzle. The first 5 lines of each puzzle description are the starting configuration. Subsequent lines give the sequence of moves.

The first line of the frame display corresponds to the top line of squares in the puzzle. The other lines follow in order. The empty position in a frame is indicated by a blank. Each display line contains exactly 5 characters, beginning with the character on the leftmost square (or a blank if the leftmost square is actually the empty frame position). The display lines will correspond to a legitimate puzzle.

The sequence of moves is represented by a sequence of As, Bs, Rs, and Ls to denote which square moves into the empty position. A denotes that the square above the empty position moves; B denotes that the square below the empty position moves; L denotes that the square to the left of the empty position moves; R denotes that the square to the right of the empty position moves. It is possible that there is an illegal move, even when it is represented by one of the 4 move characters. If an illegal move occurs, the puzzle is considered to have no final configuration. This sequence of moves may be spread over several lines, but it always ends in the digit 0. The end of data is denoted by the character Z.

Output

Output for each puzzle begins with an appropriately labeled number (Puzzle #1Puzzle #2, etc.). If the puzzle has no final configuration, then a message to that effect should follow. Otherwise that final configuration should be displayed.

Format each line for a final configuration so that there is a single blank character between two adjacent letters. Treat the empty square the same as a letter. For example, if the blank is an interior position, then it will appear as a sequence of 3 blanks - one to separate it from the square to the left, one for the empty position itself, and one to separate it from the square to the right.

Separate output from different puzzle records by one blank line.

Note: The first record of the sample input corresponds to the puzzle illustrated above.

Sample Input

TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL0
ABCDE
FGHIJ
KLMNO
PQRS
TUVWX
AAA
LLLL0
ABCDE
FGHIJ
KLMNO
PQRS
TUVWX
AAAAABBRRRLL0
Z

Sample Output

Puzzle #1:
T R G S J
X O K L I
M D V B N
W P A E
U Q H C F Puzzle #2:
A B C D
F G H I E
K L M N J
P Q R S O
T U V W X Puzzle #3:
This puzzle has no final configuration. 这个题目仔细一点就不会错了
我第一次做的时候忽视了一种情况,就是刚开始运行的时候就算超出边框了,还得继续输入,
#include<stdio.h>
#include<string.h> char str[10][10];
char Deal[3000];
char ch;
int ErrorFlag;
int x,y;
int Flag;
int main()
{
Flag=0;
while((gets(str[0]))!=NULL&&strcmp(str[0],"Z"))
{
ErrorFlag=0;
for(int j=0; j<strlen(str[0]); j++)
if(str[0][j]==' ')
{
x=0;
y=j;
}
for(int i=1; i<5; i++)
{
gets(str[i]);
for(int j=0; j<strlen(str[i]); j++)
if(str[i][j]==' ')
{
x=i;
y=j;
}
}
while(gets(Deal)!=NULL)
{
for(int i=0; i<strlen(Deal); i++)
{
if(Deal[i]=='A')
{
if(x==0)
{
ErrorFlag=1;
break;
}
ch=str[x][y];
str[x][y]=str[x-1][y];
str[x-1][y]=ch;
x--;
}
if(Deal[i]=='B')
{
if(x==4)
{
ErrorFlag=1;
break;
}
ch=str[x][y];
str[x][y]=str[x+1][y];
str[x+1][y]=ch;
x++;
}
if(Deal[i]=='R')
{
if(y==4)
{
ErrorFlag=1;
break;
}
ch=str[x][y];
str[x][y]=str[x][y+1];
str[x][y+1]=ch;
y++;
}
if(Deal[i]=='L')
{
if(y==0)
{
ErrorFlag=1;
break;
}
ch=str[x][y];
str[x][y]=str[x][y-1];
str[x][y-1]=ch;
y--;
}
}
if(ErrorFlag) break;
if(Deal[strlen(Deal)-1]=='0') break;
}
if(Flag)
printf("\n");
printf("Puzzle #%d:\n",++Flag);
if(ErrorFlag)
{
printf("This puzzle has no final configuration.\n");
continue;
}
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
if(j)
printf(" ");
printf("%c",str[i][j]);
}
printf("\n");
}
}
}

  结果就WA了。

  AC代码:

 #include<stdio.h>
#include<string.h> char str[][];
char Deal[];
char ch;
int ErrorFlag;
int x,y;
int Flag;
int main()
{
Flag=;
while((gets(str[]))!=NULL&&strcmp(str[],"Z"))
{
ErrorFlag=;
for(int j=; j<strlen(str[]); j++)
if(str[][j]==' ')
{
x=;
y=j;
}
for(int i=; i<; i++)
{
gets(str[i]);
for(int j=; j<strlen(str[i]); j++)
if(str[i][j]==' ')
{
x=i;
y=j;
}
}
while(gets(Deal)!=NULL)
{
if(ErrorFlag==)
{
for(int i=; i<strlen(Deal); i++)
{
if(Deal[i]=='A')
{
if(x==)
{
ErrorFlag=;
break;
}
ch=str[x][y];
str[x][y]=str[x-][y];
str[x-][y]=ch;
x--;
}
if(Deal[i]=='B')
{
if(x==)
{
ErrorFlag=;
break;
}
ch=str[x][y];
str[x][y]=str[x+][y];
str[x+][y]=ch;
x++;
}
if(Deal[i]=='R')
{
if(y==)
{
ErrorFlag=;
break;
}
ch=str[x][y];
str[x][y]=str[x][y+];
str[x][y+]=ch;
y++;
}
if(Deal[i]=='L')
{
if(y==)
{
ErrorFlag=;
break;
}
ch=str[x][y];
str[x][y]=str[x][y-];
str[x][y-]=ch;
y--;
}
}
}
if(Deal[strlen(Deal)-]=='') break;
}
if(Flag)
printf("\n");
printf("Puzzle #%d:\n",++Flag);
if(ErrorFlag)
{
printf("This puzzle has no final configuration.\n");
continue;
}
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
if(j)
printf(" ");
printf("%c",str[i][j]);
}
printf("\n");
}
}
return ;
}

uva 227 Puzzle的更多相关文章

  1. UVA 227 Puzzle - 输入输出

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

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

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

  3. uva 227 Puzzle (UVA - 227)

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

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

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

  5. UVA 277 Puzzle

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

  6. UVA 227 周期串

    题意: 给一个字符串,寻找最短的循环节 如abcabcabcabc以3为周期,也按6和12为周期. 分析: 因为循环节肯定是相等的,所以枚举串长度的所有约数的循环节再判断是否相等即可. 我的方法是枚举 ...

  7. Uva227.Puzzle

    题目连接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. UVA_Digit Puzzle UVA 12107

    If you hide some digits in an integer equation, you create a digit puzzle. The figure below shows tw ...

  9. uva live 12846 A Daisy Puzzle Game

    假设下一个状态有必败.那么此时状态一定是必胜,否则此时状态一定是必败 状压DP #include<iostream> #include<map> #include<str ...

随机推荐

  1. IOS单例模式(Singleton)

    IOS单例模式(Singleton)   单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模 ...

  2. 修改textField的placeholder的字体颜色、大小

    textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...

  3. Android SQLite简介

    SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使 ...

  4. bzoj1148

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1148 很常见的排序贪心题...... 假设我们得到了一个最优序列,记s[n]=w[1]+w[2 ...

  5. HDU5044---Tree 树链剖分

    大致题意:add1 u v   u到v路径上所有点的权值加上k,add2  u 到v路径上所有边的权值加上k 最后输出所有点的权值,边的权值..树链剖分预处理然后来个线性O(n)的操作.刚开始用线段树 ...

  6. 面试题32.从1到n整数中1出现的次数

    题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从 1到12这些整数中包含1的数字中1,10,11和12,1一共出现了5次 本题可以直接变量1到n的n个数然后分别计 ...

  7. first move advantage_百度搜索

    first move advantage_百度搜索 先动优势

  8. hibernate错题解析

    01 Hibernate错题分析   解析: 此题目考查的是对Hibernate中交叉连接的理解.HQL支持SQL风格的交叉连接查询,交叉连接适用于两个类之间没有定义任何关联时.在where字句中,通 ...

  9. 同一台电脑启动两个或多个tomcat

    今天要在机子的tomcat上部署新的项目,需要访问的端口为80,与之前不同. 但要求不能更改原tomcat部署项目的端口,因为该tomcat内的项目正在对外使用中,且不能断开服务器. 那么,我就需要再 ...

  10. SDK命令行操作

    * 使用前需要先在path中添加Android SDK的环境变量,跟Java JDK的配置相同 我当前目录如下:F:\Program\Android SDK\tools:F:\Program\Andr ...