蒟蒻的一维数组解法
wangruichen
2022-05-04 21:03:45
17
返回题目
#include<ios>
#define int unsigned int
inline int read(){
char c(getchar());
int x(0);
while(!isdigit(c))c=getchar();
for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);
return x;
}
int f[2501],a[10001];
char n=read(),m=read();
inline int max(int a,int b,int c,int d){return std::max(std::max(a,b),std::max(c,d));}
main(){
for(char i=1;i<=n;i++)
for(char j=1;j<=m;j++)
a[i*100+j]=read();
for(char i=3;i<=n+m;i++)
for(char j=n;j>0;j--)
for(char k=n;k>j;k--)
f[j*50+k]=max(f[j*50+k],f[(j-1)*50+k-1],f[(j-1)*50+k],f[j*50+k-1])+a[j*100+i-j]+a[k*100+i-k];
printf("%d",f[(n-1)*50+n]);
}
{{ vote && vote.total.up }}