[[http://poj.org/problem?id=1191|POJ 1191]] #include #include #include #include #include using namespace std; int n,a[9][9]; int f[9][9][9][9][16],pre[9][9]; int dp(int x1,int y1,int x2,int y2,int k) { if(k==0) f[x1][y1][x2][y2][k]=(pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1])*(pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1]); if(x1==x2&&y1==y2)f[x1][y1][x2][y2][k]=a[x1][y1]*a[x1][y1]; if(f[x1][y1][x2][y2][k]<0x3f3f3f3f)return f[x1][y1][x2][y2][k]; for(int i=x1;i