显示原始代码
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll mp[205][205];
static ll sum[205], r;
ll k, T;
ll turn(ll x, ll y) {
ll tmp1 = mp[x][y], tmp2 = mp[x][y + 1], tmp3 = mp[x + 1][y + 1], tmp4 = mp[x + 1][y];
mp[x][y] = tmp2;
mp[x][y + 1] = tmp3;
mp[x + 1][y] = tmp1;
mp[x + 1][y + 1] = tmp4;
return tmp1 + tmp2 + tmp3 + tmp4;
}
void back(ll x, ll y) {
ll tmp1 = mp[x][y], tmp2 = mp[x][y + 1], tmp3 = mp[x + 1][y + 1], tmp4 = mp[x + 1][y];
mp[x][y] = tmp4;
mp[x][y + 1] = tmp1;
mp[x + 1][y] = tmp3;
mp[x + 1][y + 1] = tmp2;
}
ll wzhplay(ll lun) {
ll zxhplay(ll lun);
ll maxi = 0;
ll tmp, t;
for (ll i = 0; i < 3; i++) {
for (ll j = 0; j < 3; j++) {
t = turn(i, j);
tmp = t + zxhplay(lun);
maxi = max(maxi, tmp);
back(i, j);
}
}
return maxi;
}
ll zxhplay(ll lun) {
ll mini = 1000000;
ll tmp, t;
for (ll i = 0; i < 3; i++) {
for (ll j = 0; j < 3; j++) {
t = turn(i, j);
if (lun == k) {
mini = min(mini, t);
} else {
tmp = t + wzhplay(lun + 1);
mini = min(mini, tmp);
}
back(i, j);
}
}
return mini;
}
int main() {
scanf("%lld", &T);
for (ll i = 0; i < T; i++) {
scanf("%lld", &k);
for (ll j = 0; j < 4; j++) {
for (ll k = 0; k < 4; k++) {
scanf("%lld", &mp[j][k]);
}
}
r = wzhplay(1);
sum[i] = r;
}
for (ll i = 0; i < T; i++) {
printf("%lld\n", sum[i]);
}
return 0;
}