显示原始代码
#include <iostream>
using namespace std;
int b[4][4], sum[7], k, max1[7], min1[7], n, c, a[200];
void f(int b[][4], int k) {
if (k == 0)
return;
else {
min1[k] = 100000000;
sum[k] = 0;
max1[k] = 0;
if (k % 2 == 0) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
sum[k] = sum[k] + b[i][j] + b[i + 1][j] + b[i][j + 1] + b[i + 1][j + 1];
c = b[i][j];
b[i][j] = b[i][j + 1];
b[i][j + 1] = b[i + 1][j + 1];
b[i + 1][j + 1] = b[i + 1][j];
b[i + 1][j] = c;
f(b, k - 1);
sum[k] = sum[k] + sum[k - 1];
c = b[i][j];
b[i][j] = b[i + 1][j];
b[i + 1][j] = b[i + 1][j + 1];
b[i + 1][j + 1] = b[i][j + 1];
b[i][j + 1] = c;
if (max1[k] < sum[k]) {
max1[k] = sum[k];
}
sum[k] = 0;
}
}
sum[k] = max1[k];
max1[k] = 0;
} else {
min1[k] = 100000000;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
sum[k] = sum[k] + b[i][j] + b[i + 1][j] + b[i][j + 1] + b[i + 1][j + 1];
c = b[i][j];
b[i][j] = b[i][j + 1];
b[i][j + 1] = b[i + 1][j + 1];
b[i + 1][j + 1] = b[i + 1][j];
b[i + 1][j] = c;
f(b, k - 1);
sum[k] = sum[k] + sum[k - 1];
c = b[i][j];
b[i][j] = b[i + 1][j];
b[i + 1][j] = b[i + 1][j + 1];
b[i + 1][j + 1] = b[i][j + 1];
b[i][j + 1] = c;
if (min1[k] > sum[k]) {
min1[k] = sum[k];
}
sum[k] = 0;
}
}
sum[k] = min1[k];
min1[k] = 100000000;
}
}
}
int main() {
int n;
cin >> n;
for (int x = 0; x < n; x++) {
cin >> k;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cin >> b[i][j];
}
}
f(b, 2 * k);
a[x] = sum[2 * k];
}
for (int i = 0; i < n; i++) {
cout << a[i] << '\n';
}
return 0;
}