文章
34
粉丝
0
获赞
6
访问
1.0k
#include<bits/stdc++.h>
using namespace std;
void merge(int *b){
int front = b[0];
int flag = 0; // front是否为合并后的结果
for(int i = 1; i < 4; i++){
if(!flag && front == b[i]){
b[i - 1] *= 2;
b[i] = 0;
flag = 1;
}else{
front = b[i];
if(flag) flag = 0;
}
}
// 将b数组紧缩,大于0的数字向前靠拢
int i = 0;
for(int j = 0; j < 4; j++){
if(b[j] == 0) continue;
else b[i++] = b[j];
}
while(i < 4) b[i++] = 0;
}
int main(){
int n; cin >> n;
int a[4][4] = {0};
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++) cin >> a[i][j];
if(n == 1){
// 向上
for(int j = 0; j < 4; j++){
int b[4] = {0};
int cnt = 0;
for(int i = 0; i < 4; i++){
if(a[i][j] == 0) continue;
b[cnt++] = a[i][j];
}
// 进行合并
merge(b);
for(int i = 0; i < 4; i++){
a[i][j] = b[i];
}
}
}
else if(n == 2){
// 向下
for(int j = 0; j < 4; j++){
int b[4] ...
登录后发布评论
暂无评论,来抢沙发