各路苣佬能帮我看一下是哪里错了吗?还是思路有问题?
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=105;
int n,m,p,sx,sy,a[N][N],dis[N][N],ans,f[2*N][N][N];
signed main(){
scanf("%lld%lld%lld%lld%lld",&n,&m,&p,&sx,&sy);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%lld",&a[i][j]);
dis[i][j]=abs(i-sx)+abs(j-sy);
}
}
memset(f,0xcf,sizeof f);
f[0][sx][sy]=0;
for(int i=1;i<=min(p,max(n,m));i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++){
f[i][j][k]=max(max(f[i-1][j-1][k],f[i-1][j+1][k]),max(f[i-1][j][k-1],f[i-1][j][k+1]))+a[j][k];
}
}
}
for(int k=0;k<=min(p,max(n,m));k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(k%2==dis[i][j]%2)ans=max(ans,f[k][i][j]+(p-k)*a[i][j]);
}
}
}
printf("%lld",ans);
return 0;
}