;
char a[10][10],b[100],c,count=0;
int x=1,m,n;
int main(){
char d;
int i,j;
while(scanf("%c",&d)&&d!='Z'){
a[0][0]=d;
for(i=1;i<=4;i++)
scanf("%c",&a[0][i]);
getchar();
for(i=1;i<=4;i++){
for(j=0;j<=4;j++)
scanf("%c",&a[i][j]);
getchar();}
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
if(a[i][j]==32)
{m=i;
n=j;}
for(i=0;;i++){
scanf("%c",&b[i]);
if(b[i]=='0')
break;
}
getchar();
for(i=0;b[i]!=0;i++){
fac(b[i]);
if(count)
break;
}
if(count==0){
printf("Puzzle #%d:\n",x);
for(i=0;i<=4;i++){
for(j=0;j<=4;j++)
printf("%c ",a[i][j]);
printf("\n");
}
printf("\n");
}
count=0;
x++;
}
}
void fac(char c) {
switch(c){
case 'A':if(m-1>=0){
a[m][n]=a[m-1][n];
a[m-1][n]=' ';
m--;
}
else {printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",x);count=1;}break;
case 'B':if(m+1<=4){
a[m][n]=a[m+1][n];
a[m+1][n]=' ';
m++;
}
else {printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",x);count=1;}break;
case 'L':if(n-1>=0){
a[m][n]=a[m][n-1];
a[m][n-1]=' ';
n--;
}
else {printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",x);count=1;}break;
case 'R':if(n+1<=4){
a[m][n]=a[m][n+1];
a[m][n+1]=' ';
n++;
}
else {printf("Puzzle #%d:\nThis puzzle has no final configuration.\n",x);x++;count=1;}break;
default: ;
}
}
这个题要是我英语好的话早就过了。一直没搞懂没那个空行是怎么输的。卡了我好几天,用了各种写法。迫不及待的想交这个题,因为看网上的代码简直乱的要死,烦透了。话不多说,英语不好是硬伤。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()......
答案就在这里:uva227
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
char maps[5][7];
char cmd[1001];
int main()
{
int cases = 0;
while (gets(maps[0])) {
if (maps[0][0] == 'Z') break;
for (int i = 1 ; i < 5 ; ++ i)
gets(maps[i]);
int b_x = 0,b_y = 0;
for (int i = 0 ; i < 5 ; ++ i)
for (int j = 0 ; j < 5 ; ++ j)
if (maps[i][j] == ' ') {
b_x = i;b_y = j;
break;
}
int count = 0;
while (~scanf("%c",&cmd[count]))
if (cmd[count] != '0') count ++;
else break;
cmd[count] = 0;getchar();
int flag = 0,x = b_x,y = b_y;
for (int i = 0 ; cmd[i] ; ++ i) {
switch(cmd[i]) {
case 'A': x = b_x-1;y = b_y; break;
case 'B': x = b_x+1;y = b_y; break;
case 'L': x = b_x;y = b_y-1; break;
case 'R': x = b_x;y = b_y+1; break;
}
if (x < 0 || x > 4 || y < 0 || y > 4) {
flag = 1;break;
}else {
maps[b_x][b_y] = maps[x][y];
maps[x][y] = ' ';
b_x = x; b_y = y;
}
}
if (cases ++) printf("\n");
printf("Puzzle #%d:\n",cases);
if (flag)
printf("This puzzle has no final configuration.\n");
else {
for (int i = 0 ; i < 5 ; ++ i) {
printf("%c",maps[i][0]);
for (int j = 1 ; j < 5 ; ++ j)
printf(" %c",maps[i][j]);
printf("\n");
}
}
}
return 0;
}