习题3-5 谜题(Puzzle)
/*
谜题
输入:
TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL0
*/
#include <stdio.h>
#include<strings.h>
int main()
{
char a[10][10];
memset(a,0,sizeof(a));
int i,j;
int i1,j1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
a[i][j]=getchar(); //输入时,每个字符之间不能留空格
}
getchar(); //这个还真是难倒我了
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]==' ')
i1=i,j1=j; //记录空格位置
printf("-----------------\n");
char s[40];
scanf("%s",s);
for(int t=0;s[t]!=0;t++) //t是当前指令序数
{
if(s[t]=='A')
{
if(i1-1>0)
{
int temp=a[i1][j1];
a[i1][j1]=a[i1-1][j1];
a[i1-1][j1]=temp;
i1--;
}
else
{
printf("This puzzle has no final configuration.\n");
break;
}
}
if(s[t]=='B')
{
if(i1+1<5)
{
int temp=a[i1][j1];
a[i1][j1]=a[i1+1][j1];
a[i1+1][j1]=temp;
i1++;
}
else
{
printf("This puzzle has no final configuration.\n");
break;
}
}
if(s[t]=='L')
{
if(j1-1>0)
{
int temp=a[i1][j1];
a[i1][j1]=a[i1][j1-1];
a[i1][j1-1]=temp;
j1--;
}
else
{
printf("This puzzle has no final configuration.\n");
break;
}
}
if(s[t]=='R')
{
if(j1+1<5)
{
int temp=a[i1][j1];
a[i1][j1]=a[i1][j1+1];
a[i1][j1+1]=temp;
j1++;
}
else
{
printf("This puzzle has no final configuration.\n");
break;
}
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%c ",a[i][j]);
printf("\n");
}
return 0;
}
输出:
输入二维数组那块还真难倒我了......看了网上的一个博客才恍然大悟的。
(https://blog.****.net/sinat_38816924/article/details/82793761)