答案:89
思路:
这个直接暴搜就好了,图这么小》
#include <bits/stdc++.h> using namespace std; int a[6][6] = { {0,0,0,0,0,0}, {0,1,4,2,5,0}, {0,2,1,2,1,0}, {0,3,1,3,2,0}, {0,2,5,3,4,0}, {0,0,0,0,0,0} }; int ans = -1; int go[4][2] = {0,1,1,0,0,-1,-1,0}; bool check(int x,int y) { for(int i = 0;i < 4;++i) { int tx = x + go[i][0]; int ty = y +go[i][1]; if(a[tx][ty] == 0) return 1; } return 0; } void dfs(int step,int sum) { ans = max(sum,ans); for(int i = 1;i <= 4;++i) { for(int j = 1;j <= 4;++j) { if(a[i][j] == 0) continue; if(!check(i,j)) continue; for(int ii = 1;ii <= 4;++ii) { for(int jj = 1;jj <= 4;++jj) { if(i == ii && j == jj) continue; if(!check(ii,jj)) continue; if(a[i][j] == a[ii][jj]) { int w = a[i][j]; a[i][j] = a[ii][jj] = 0; dfs(step + 1,sum + step * w); a[i][j] = a[ii][jj] = w; } } } } } return ; } int main() { ans = -1; dfs(1,0); cout << ans << endl; }