第三题:
int main() {
int n;
cin >> n;
vector<vector<int>> a(4, vector<int>(4));
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 ll = 0;
for (int i = 0; i < 4; i++) {
if (a[i][j] == 0)
continue;
if (i + 1 < 4 && a[i][j] == a[i + 1][j]) {
a[i][j] *= 2;
a[i + 1][j] = 0;
}
swap(a[i][j], a[ll][j]);
ll++;
}
}
}
else if (n == 2) {
for (int j = 0; j < 4; j++) {
int ll = 3;
for (int i = 3; i >= 0; i--) {
if (a[i][j] == 0)
continue;
if (i - 1 >= 0 && a[i][j] == a[i - 1][j]) {
a[i][j] *= 2;
a[i - 1][j] = 0;
}
swap(a[i][j], a[ll][j]);
ll--;
}
}
}
else if (n == 3) {
for (int i = 0; i < 4; i++) {
int ll = 0;
for (int j = 0; j < 4; j++) {
if (a[i][j] == 0)
continue;
if (j + 1 < 4 && a[i][j] == a[i][j + 1]) {
a[i][j] *= 2;
a[i][j + 1] = 0;
}
swap(a[i][j], a[i][ll]);
ll++;
}
}
}
else if (n == 4) {
for (int i = 0; i < 4; i++) {
int ll = 3;
for (int j = 3; j >= 0; j--) {
if (a[i][j] == 0)
continue;
if (j - 1 >= 0 && a[i][j] == a[i][j - 1]) {
a[i][j] *= 2;
a[i][j - 1] = 0;
}
swap(a[i][j], a[i][ll]);
ll--;
}
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++)
cout << a[i][j] << ' ';
cout << endl;
}
system("pause");
return 0;
}