本题模拟2048游戏的规则,提供4X4个格子,输入每个格子的初始值(空白格子值为0),玩家选择向下移动,所有数字向下靠拢,相同的数字相撞时会合并。移动结束后,输出合并后的数值。

输入格式:

分4行,每行输入4个整数,分别表示格子中的初值,数据之间用空格分隔。

输出格式:

分4行,输出移动合并后的数据,每个数之间有一个空格,行末无空格。

输入样例:

2 0 2 22 2 4 40 2 0 24 0 0 4

输出样例:

0 0 0 20 0 0 44 0 2 24 4 4 4
#include int main(){int i,j,p,o=0,n=4;int a[4][4];for (i=0;i<4;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);//输入数据}}for (i=0;i<n;i++)//将所有数字下移到没有零存在{for(j=0;j0){for(p=i;p>0;p--){a[p][j]=a[p-1][j];}a[0][j]=0;}}}}for(j=0;j<n;j++)//合并所有相同数字{for(i=0;i<n-1;i++){if(a[i][j]!=0){if(a[i][j]==a[i+1][j]){a[i][j]=0;a[i+1][j]=2*a[i+1][j];i++;}}}}for (i=0;i<n;i++)//将所有数字下移到没有零存在{for(j=0;j0){for(p=i;p>0;p--){a[p][j]=a[p-1][j];}a[0][j]=0;}}}}for(i=0;i<n;i++)//输出数据{for(j=0;j<n;j++){printf("%d",a[i][j]);o++;if(o<4){printf(" ");}}printf("\n");o=0;}}