| 记录编号 |
250515 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
219.[NOIP 2008]传纸条 |
最终得分 |
100 |
| 用户昵称 |
Go灬Fire |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.000 s |
| 提交时间 |
2016-04-15 11:00:35 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100;
int f[maxn*2][maxn][maxn],a[maxn][maxn],n,m;
void Init();
int _max(int,int,int,int);
int PT(){
freopen("message.in","r",stdin);
freopen("message.out","w",stdout);
Init();
return 0;
}
int PS=PT();
int main(){
;
}
void Init(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for(int k=1;k<n+m-2;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)continue;
f[k][i][j]=_max(f[k-1][i][j],f[k-1][i-1][j],f[k-1][i-1][j-1],f[k-1][i][j-1])+a[i][k+2-i]+a[j][k+2-j];
}
}
}
int ans=max(f[n+m-3][n][n-1],f[n+m-3][n-1][n]);
printf("%d ",ans);
}
int _max(int a,int b,int c,int d){
int ans=0;
ans=max(ans,a);
ans=max(ans,b);
ans=max(ans,c);
ans=max(ans,d);
return ans;
}