《算法竞赛入门经典》(第2版)——习题3-5 谜题

分析:只需要根据题目走就可以啦,自己写的有点啰嗦,但是自认为思路还是比较清晰的,吼吼吼
上代码!

#include
#define maxn 5
int main(){
	char s[maxn][maxn]={'T','R','G','S','J',
		'X','D','O','K','I',
		'M',' ','V','L','N',
		'W','P','A','B','E',
		'U','Q','H','C','F'};
//	char s[maxn][maxn];
	int i,j;
	int kx,ky;
	for(i=0;i=0){
				t=s[kx][ky];s[kx][ky]=s[kx-1][ky];s[kx-1][ky]=t;//根据指令进行互换 
				kx=kx-1;//互换后,空格的位置发生改变,这一步是关键! 
			}
			else {
				flag=0;				
				printf("This puzzle has no final configuration.\n");
				break;//如果出现非法指令,停止遍历,后面的都是一样的道理就不罗嗦啦
			}
				
		else if(message[k]=='B' )
			if(kx+1=0){
				t=s[kx][ky];s[kx][ky]=s[kx][ky-1];s[kx][ky-1]=t;
				ky=ky-1;
			}
			else {
				flag=0;				
				printf("This puzzle has no final configuration.\n");
				break;
			}
		else if(message[k]=='R' )
			if(ky+1

对了,需要提醒的是,第九,十四行注释掉的是让寄几定义数组,然后寄几输入的,我嫌每次都自己输入,比较麻烦,所以就干脆在一开始先初始化了一锅现成的数组(毕竟这也是我多次调试才成功的。。。每次都寄几输入,太烦惹。。。),如果有不同思路的,欢迎讨论哈

你可能感兴趣的:(ACM练习)