这题这么做为什么错了qvq
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=310;
template<typename T>void read(T&x){
x=0;
ll flag=1;
char c;
do{
c=getchar();
if(c=='-') flag=-1;
}while(!isdigit(c));
do{
x=x*10+c-'0';
c=getchar();
}while(isdigit(c));
x*=flag;
}
ll n,a[N][N];
int dp[N][N][N][2];
ll maxx(ll a,ll b,ll c,ll d){
return max(max(max(a,b),c),d);
}
ll minx(ll a,ll b,ll c,ll d){
return min(min(min(a,b),c),d);
}
int main(){
read(n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
read(a[i][j]);
dp[i][j][1][0]=a[i][j];
dp[i][j][1][1]=a[i][j];
}
}
for(int k=2;k<=n;k++){
for(int i=1;i<=n-k+1;i++){
for(int j=1;j<=n-k+1;j++){
ll zs=dp[i][j][k-1][0]+a[i+k-1][j+k-1];
ll ys=dp[i][j+1][k-1][0]+a[i+k-1][j];
ll zx=dp[i+1][j][k-1][0]+a[i][j+k-1];
ll yx=dp[i+1][j+1][k-1][0]+a[i][j];
ll zs2=dp[i][j][k-1][1]+a[i+k-1][j+k-1];
ll ys2=dp[i][j+1][k-1][1]+a[i+k-1][j];
ll zx2=dp[i+1][j][k-1][1]+a[i][j+k-1];
ll yx2=dp[i+1][j+1][k-1][1]+a[i][j];
dp[i][j][k][0]=maxx(zs,ys,zx,yx);
dp[i][j][k][1]=minx(zs2,ys2,zx2,yx2);
}
}
}
printf("%d\n%d",dp[1][1][n][1],dp[1][1][n][0]);
return 0;
}