#include <stdio.h>
#include <string.h>
int main()
{
int i,j,len,kase=0,flag=0;
char st[10][10],ord[1000];
while(gets(st[0]))
{
if(st[0][0]=='Z') break;
if(flag==1) printf("\n");
flag=1;
int a,b;
int k=0;
int ans=0;
for(i=1;i<5;i++)
gets(st[i]);
while(~scanf("%c",&ord[k]))
{
if(ord[k]=='0') break;
k++;
}
getchar();
len=strlen(ord);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(st[i][j]==' ')
{
a=i;
b=j;
i=100;
break;
}
}
printf("Puzzle #%d:\n",++kase);
for(i=0;i<len;i++)
{
if(ord[i]=='0') break;
if(ord[i]=='A')
{
if(a==0)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a-1][b];
st[a-1][b]=t;
a=a-1;
}
else if(ord[i]=='B')
{
if(a==4)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a+1][b];
st[a+1][b]=t;
a=a+1;
}
else if(ord[i]=='L')
{
if(b==0)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a][b-1];
st[a][b-1]=t;
b=b-1;
}
else if(ord[i]=='R')
{
if(b==4)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a][b+1];
st[a][b+1]=t;
b=b+1;
}
}
if(ans==0)
{
for(i=0;i<5;i++)
{
printf("%c",st[i][0]);
for(j=1;j<5;j++)
printf(" %c",st[i][j]);
printf("\n");
}
memset(st,0,sizeof(st));
memset(ord,0,sizeof(st));
}
}
return 0;
#include <string.h>
int main()
{
int i,j,len,kase=0,flag=0;
char st[10][10],ord[1000];
while(gets(st[0]))
{
if(st[0][0]=='Z') break;
if(flag==1) printf("\n");
flag=1;
int a,b;
int k=0;
int ans=0;
for(i=1;i<5;i++)
gets(st[i]);
while(~scanf("%c",&ord[k]))
{
if(ord[k]=='0') break;
k++;
}
getchar();
len=strlen(ord);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(st[i][j]==' ')
{
a=i;
b=j;
i=100;
break;
}
}
printf("Puzzle #%d:\n",++kase);
for(i=0;i<len;i++)
{
if(ord[i]=='0') break;
if(ord[i]=='A')
{
if(a==0)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a-1][b];
st[a-1][b]=t;
a=a-1;
}
else if(ord[i]=='B')
{
if(a==4)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a+1][b];
st[a+1][b]=t;
a=a+1;
}
else if(ord[i]=='L')
{
if(b==0)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a][b-1];
st[a][b-1]=t;
b=b-1;
}
else if(ord[i]=='R')
{
if(b==4)
{
printf("This puzzle has no final configuration.\n");
ans=1;
break;
}
int t=st[a][b];
st[a][b]=st[a][b+1];
st[a][b+1]=t;
b=b+1;
}
}
if(ans==0)
{
for(i=0;i<5;i++)
{
printf("%c",st[i][0]);
for(j=1;j<5;j++)
printf(" %c",st[i][j]);
printf("\n");
}
memset(st,0,sizeof(st));
memset(ord,0,sizeof(st));
}
}
return 0;
}
心得:没什么好说的,调试比较麻烦= =