#include <bits/stdc++.h>
double f[8][8][8][8],sum[8][8][8][8];
int search(int t,int x1,int y1,int x2,int y2)
{
for(int i=x1;i<=x2;i++)
f[x1][y1][i][y2]=search(t+1,x1,y1,i,y2)+sum[][][][];
for(int i=x2;i>=x1;i--)
f[i][y2][x2][y2]=search(t+1,i,y1,x2,y2);
for(int i=y1;i<=y2;i++)
f[x1][y1][x2][i]=search(t+1,x1,y1,x2,i);
for(int i=y2;i>=y1;i--)
f[x1][i][x2][y2]=search(t+1,x1,i,x2,y2);
}
int main()
{
//<Input>
int n,map[8][8];
scanf("%d",&n);
for(int i=0;i<=7;i++)
for(int j=0;j<=7;j++)
scanf("%d",&map[i][j]);
//</Input>
//<Initialization>
memset(f,0,sizeof(f));
for(int i=0;i<=7;i++)
for(int j=0;j<=7;j++)
for(int k=0;k<=7;k++)
for(int l=0;l<=7;l++)
{
int s=0;
for(int i1=i;i1<=k;i1++)
for(int j1=j;j1<=l;j1++)
s+=map[i][j][k][l];
sum[i][j][k][l]=s;
}
//</Initialization>
search(1,0,0,7,7);
printf("%.3lf",f[0][0][7][7]);
}
棋盘分割
最新推荐文章于 2022-05-07 16:16:50 发布