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. Android学习笔记--存储方案(SharedPreference、文件IO)

    1. SharedPreference SharedPreference可以很容易的保存key-value对,通常用于保存配置信息.保存的步骤 1. 获得SharedPreferences对象 (最后 ...

  2. Linux cat和EOF的使用

    在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...

  3. android使用Genymotion作为模拟器

    Genymotion模拟器的好处自然不用多说,直接来说怎么用: (1)去官方网站下载:中文或英文的: http://www.genymotion.net/ http://www.genymotion. ...

  4. (2)自己写一个简单的servle容器

    自己写一个简单的servlet,能够跑一个简单的servlet,说明一下逻辑. 首先是写一个简单的servlet,这就关联到javax.servlet和javax.servlet.http这两个包的类 ...

  5. centos无线网卡设置

    联想thinkpad E430 ,安装上centos后,无线网卡一直无法使用,经历了艰苦曲折到网卡驱动安装过程,历时2个晚上终于开心到用上无线网卡. 1.查看无线网卡到具体型号 [root@local ...

  6. 程序员必备基础知识:通信协议——Http、TCP、UDP

    CP HTTP UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP HTTP UDP三者的关系: TCP/IP是个协议组,可分为四个层次: ...

  7. LeetCode 191. Number of 1 Bits Question

    题意:给你一个整数,计算该整数的二进制形式里有多少个“1”.比如6(110),就有2个“1”. 一开始我就把数字n不断右移,然后判定最右位是否为1,是就cnt++,否则就继续右移直到n为0. 可是题目 ...

  8. java_内存划分

    内存划分

  9. 设计模式--观察者(Observer)

    GOF给出的定义: Define a one-to-many dependency between objects so that when one object changes state, all ...

  10. html5 app图片预加载

    function Laimgload(){} //图片预加载JS Laimgload.prototype.winHeight = function(){ //计算页面高度 var winHeight ...