显示原始代码
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int a[10][10];
int K, T;
void rot(int i, int j, bool who) {
int t = a[i][j];
if (who) {
a[i][j] = a[i + 1][j];
a[i + 1][j] = a[i + 1][j + 1];
a[i + 1][j + 1] = a[i][j + 1];
a[i][j + 1] = t;
} else {
a[i][j] = a[i][j + 1];
a[i][j + 1] = a[i + 1][j + 1];
a[i + 1][j + 1] = a[i + 1][j];
a[i + 1][j] = t;
}
}
int sum(int i, int j) {
int s;
s = a[i][j] + a[i + 1][j] + a[i + 1][j + 1] + a[i][j + 1];
return s;
}
int dfs(int bushu, bool tell) {
if (bushu > K) {
return 0;
}
int ans = tell ? inf : 0;
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
rot(i, j, false);
int d = dfs(bushu + tell, !tell);
if (!tell) {
ans = max(ans, d + sum(i, j));
} else {
ans = min(ans, d + sum(i, j));
}
rot(i, j, true);
}
}
return ans;
}
int main() {
cin >> T;
while (T--) {
cin >> K;
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
cin >> a[i][j];
}
}
cout << dfs(1, false) << endl;
}
cin.get();
cin.get();
return 0;
}