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. hdu 2019

    Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序.   Input 输入数据包含多 ...

  2. DLog 技巧

    #ifdef DEBUG#ifndef DLog# define DLog(fmt, ...) {NSLog((@"%s [Line %d] " fmt), __PRETTY_FU ...

  3. (摘)DataGuard物理standby管理 - 主备切换

    DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...

  4. jquery serialize的使用

    serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. <!DOCTYPE html> <html lang="en"> <he ...

  5. Unity中Mecanim工作流

    Mecanim工作流可以被分解为3个主要阶段:1.资源的准备和导入这一阶段由美术师或动画师通过第三方工具来完成,例如Max或Maya.2.角色的建立主要有以下两种方式1)人形角色的建立.Mecanim ...

  6. (转) Linux的capability深入分析(2)

    一)capability的工具介绍   在我们的试验环境是RHEL6,libcap-2.16软件包中包含了相关的capability设置及查看工作,如下:   rpm -ql libcap-2.16- ...

  7. Eclipse无法打开“Failed to load the JNI shared library”

    解决方案一 这是因为JDK配置错误所导致的现象. 一般说来,新购笔记本会预装64位的windows系统,而在网上下载软件时,32位会优先出现在页面中(现在来说是这个情况,但我认为未来64位会越来越普及 ...

  8. 算法导论(第三版)习题Exercises4.3(第四章三节)算法导论的一个印刷错误

    本节系列证明都可见4.5节需要说明的有4.3-8,4.3-9两题 4.3-8(本题有误) T(n)=4T(n/2)+n2根据4.5理论,结果为Θ(n2lgn) 4.3-9 m = lgn T(2m) ...

  9. sqlite3 C接口

  10. poj 3692 Kindergarten (最大独立集之逆匹配)

    Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and al ...