View Code of Problem 10

#include <iostream>
using namespace std;
void change(int a[],int k){//向右移 
	int i;
	for(i=k-1;i>=0;i--){
		if(a[i]!=0)
			break;
	}
	a[k]=a[i];
	a[i]=0;
}
int main(){
	int n;
	cin>>n;
	while(n--){
		int a[4];
		for(int i=0;i<4;i++)
			cin>>a[i];
		for(int i=3;i>0;i--){//2 2 2 2    2 0 2 4	
			if(a[i]){
				int j=i-1;
				while(j>=0){
					if(a[i]==a[j]){
						a[i]+=a[j];
						a[j]=0;
						change(a,j);
						break;
					}else if(a[j]>0){
						break;
					}else {
						j--;
					}
				}
				if(a[i]==a[i+1])
					i+=2;
			}else{
				change(a,i);
			}
//			for(int i=0;i<4;i++)
//				cout<<a[i]<<"-";
//			cout<<endl;
		}
		for(int i=0;i<4;i++)
			cout<<a[i]<<" ";
		cout<<endl;
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 10