习题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;
}

输出:

习题3-5 谜题(Puzzle)

输入二维数组那块还真难倒我了......看了网上的一个博客才恍然大悟的。

https://blog.****.net/sinat_38816924/article/details/82793761