1 条题解

  • 0
    @ 1 周前
    #include<bits/stdc++.h>
    using namespace std;
    int a[10][10];
    void l(){
    	for(int i=1;i<=4;i++){
    		int tmp[5]={},id=0;
    		for(int j=1;j<=4;j++){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int j=1;j<=4;j++){
    			if(j<=id) a[i][j]=tmp[j];
    			else a[i][j]=0;
    		}
    	}
    	for(int i=1;i<=4;i++){
    		for(int j=1;j<=4;j++){
    			if(a[i][j]==0) continue;
    			if(a[i][j]==a[i][j+1]) a[i][j]*=2,a[i][j+1]=0;
    		}
    	}
    	for(int i=1;i<=4;i++){
    		int tmp[5]={},id=0;
    		for(int j=1;j<=4;j++){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int j=1;j<=4;j++){
    			if(j<=id) a[i][j]=tmp[j];
    			else a[i][j]=0;
    		}
    	}
    }
    void r(){
    	for(int i=1;i<=4;i++){
    		int tmp[5]={},id=0;
    		for(int j=4;j>=1;j--){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int j=4;j>=1;j--){
    			if(j>=4-id) a[i][j]=tmp[4-j+1];
    			else a[i][j]=0;
    		}
    	}
    	for(int i=1;i<=4;i++){
    		for(int j=4;j>=1;j--){
    			if(a[i][j]==0) continue;
    			if(a[i][j]==a[i][j-1]) a[i][j]*=2,a[i][j-1]=0;
    		}
    	}
    	for(int i=1;i<=4;i++){
    		int tmp[5]={},id=0;
    		for(int j=4;j>=1;j--){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int j=4;j>=1;j--){
    			if(j>=4-id) a[i][j]=tmp[4-j+1];
    			else a[i][j]=0;
    		}
    	}
    }
    void u(){
    	for(int j=1;j<=4;j++){
    		int tmp[5]={},id=0;
    		for(int i=1;i<=4;i++){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int i=1;i<=4;i++){
    			if(i<=id) a[i][j]=tmp[i];
    			else a[i][j]=0;
    		}
    	}
    	for(int j=1;j<=4;j++){
    		for(int i=1;i<=4;i++){
    			if(a[i][j]==0) continue;
    			if(a[i][j]==a[i+1][j]) a[i][j]*=2,a[i+1][j]=0;
    		}
    	}
    	for(int j=1;j<=4;j++){
    		int tmp[5]={},id=0;
    		for(int i=1;i<=4;i++){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int i=1;i<=4;i++){
    			if(i<=id) a[i][j]=tmp[i];
    			else a[i][j]=0;
    		}
    	}
    }
    void d(){
    	for(int j=4;j>=1;j--){
    		int tmp[5]={},id=0;
    		for(int i=4;i>=1;i--){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int i=4;i>=1;i--){
    			if(i>=4-id) a[i][j]=tmp[4-i+1];
    			else a[i][j]=0;
    		}
    	}
    	for(int j=4;j>=1;j--){
    		for(int i=4;i>=1;i--){
    			if(a[i][j]==0) continue;
    			if(a[i][j]==a[i-1][j]) a[i][j]*=2,a[i-1][j]=0;
    		}
    	}
    	for(int j=4;j>=1;j--){
    		int tmp[5]={},id=0;
    		for(int i=4;i>=1;i--){
    			if(a[i][j]!=0) tmp[++id]=a[i][j];
    		}
    		for(int i=4;i>=1;i--){
    			if(i>=4-id) a[i][j]=tmp[4-i+1];
    			else a[i][j]=0;
    		}
    	}
    }
    int main(){
    	for(int i=1;i<=4;i++){
    		for(int j=1;j<=4;j++) cin>>a[i][j];
    	}
    	int m;
    	cin>>m;
    	while(m--){
    		char op;
    		cin>>op;
    		if(op=='L') l();
    		else if(op=='R') r();
    		else if(op=='U') u();
    		else d();
    	}
    	for(int i=1;i<=4;i++){
    		for(int j=1;j<=4;j++) cout<<a[i][j]<<" ";
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3239
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    153
    已通过
    24
    上传者