询问为啥re了
查看原帖
询问为啥re了
878821
b1acat楼主2023/3/11 20:17
#include<iostream>
#include<stack>
#include<string>
using namespace std;


int n,box[30][30];
string s1,s2;

int back(int (*box)[30],int x){//a顶部的方块都回到自己原来的位置 
	int i,j;
		for(i=0;i<n;i++){
			for(j=0;j<n;j++) 
				if(box[i][j]==x){
					while(box[i][++j]){
						cout <<'1';
						box[box[i][j]][0]=box[i][j];
						box[i][j]=0;
					}
					return 0;
				}
		}	
}

int move(int (*box)[30],int x,int y){//把A都移到B上 
	int i,j,ai,aj,bi,bj;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++){
			if(box[i][j]==x){
				ai=i;aj=j;
			}
			if(box[i][j]==y){
				bi=i;bj=j;						
						}	
		}
	if(ai==bi) return 0;
	while(box[bi][++bj]);

	while(box[ai][aj]){
		box[bi][bj]=box[ai][aj];
		box[ai][aj]=0;
		aj++;bj++;
	}
	
}

void show(int (*box)[30]){
	for(int i=0;i<n;i++){
		cout <<i <<": ";
		for(int j=0;j<n;j++){
			if(box[i][j]==-1) cout <<0 <<' ';
			else if(box[i][j]) cout <<box[i][j] <<' ';
		}
		cout <<endl;
	}
}

int main(){
	cin >>n;
	for(int i=0;i<n;i++){
		box[i][0]=i;
	}
	box[0][0]=-1;
	int a,b;
	cin >>s1;
	while(s1[0]!='q'){
		cin >>a >>s2 >>b;
	//	cout <<s1 <<' ' <<a <<' ' <<s2 <<b;
		if(s1[0]=='m'&&s2[3]=='o'){
	
			back(box,a);
			back(box,b);
			move(box,a,b);
		}
		
		if(s1[0]=='m'&&s2[3]=='r'){
			back(box,a);
			move(box,a,b);
		}
		
		if(s1[0]=='p'&&s2[3]=='o'){
			back(box,a);
			move(box,a,b);
		}
		
		if(s1[0]=='p'&&s2[3]=='r'){
			move(box,a,b);		
				}	
				
		cin >>s1 ;
	}
	show(box);
}

2023/3/11 20:17
加载中...