算法入门 习题3-5 谜题

​
#include <stdio.h>
#include<iostream>
#include<cmath>
#include <string.h>
using namespace std;
#define maxn 6

char s[maxn][maxn]={"TRGSJ","XDOKI","M VLN","WPABE","UQHCF"};
char input[85];

int arrtop=2;	//		行 
int arrleft=1;	//		列 

int A(){	//上
 	if(arrtop>0){
 		s[arrtop][arrleft]=s[arrtop-1][arrleft];
 		arrtop-=1;
 		s[arrtop][arrleft]=' ';
	 }
	 else{
	 	return 0;
	 }
	return 1;
}
int B(){	//下 
	if(arrtop<maxn-2){
		s[arrtop][arrleft]=s[arrtop+1][arrleft];
		arrtop+=1;
		s[arrtop][arrleft]=' ';
	}
	else{
		return 0;
	}
	return 1;
}
int L(){	//左 
	if(arrleft>0){
		s[arrtop][arrleft]=s[arrtop][arrleft-1];
		arrleft-=1;
		s[arrtop][arrleft]=' ';
	}else{
		return 0;
	}
	return 1;
}
int R(){	//右 
	if(arrleft<maxn-2){
		s[arrtop][arrleft]=s[arrtop][arrleft+1];
		arrleft+=1;
		s[arrtop][arrleft]=' ';
	}else{
		return 0;
	}
	return 1;
}
int main(){
	cin>>input;
	int k=0;
	int tag=1;
	while(input[k]!='0'){
		switch(input[k]){
			case 'A':tag=A();break;
			case 'B':tag=B();break;
			case 'L':tag=L();break;
			case 'R':tag=R();break;
			default:
				cout<<"This puzzle has no final configuration."<<endl;break;
		}
		if(!tag)
			break;
		k++;
	}
	if(tag){	
		for(int i=0;i<5;i++){ 
			for(int j=0;j<5;j++){
				cout<<s[i][j]<<"\t";
			}
			cout<<endl;
		}
	} else{
		cout<<"This puzzle has no final configuration."<<endl;
	}
	return 0; 
}
​

猜你喜欢

转载自blog.csdn.net/qq_41138935/article/details/81096434
今日推荐