讨论 / 为什么第三个点老师过不了啊
liftist 2012-02-06 16:55:00
点我顶贴 收藏 删除
#include <iostream>

#include <stdio.h>

using namespace std;

int m,n,data[51][51],f[1001][51][51];

int max0(int a,int b,int c,int d)

{ int u;

u=a;

if(b>u) u=b;

if(c>u) u=c;

if(d>u) u=d;

return u;

}

int main()

{ scanf("%d%d",&m,&n);

for(int i=1;i<=m;i++)

for(int j=1;j<=n;j++)

scanf("%d",&data[i][j]);

f[1][1][1]=data[1][1];

for(int i=2;i<=m+n-1;i++)//阶段

for(int x1=1;x1<=n;x1++)//枚举x1的横坐标

for(int x2=1;x2<=n;x2++)//枚举x2的横坐标

if(1+i-x1>=0&&1+i-x2>=0)

{ f[i][x1][x2]=max0(f[i-1][x1-1][x2],f[i-1][x1-1][x2-1],f[i-1][x1][x2-1],f[i-1][x1][x2]);

if(x1!=x2) f[i][x1][x2]+=(data[x1][1+i-x1]+data[x2][1+i-x2]);

if(x1==x2) f[i][x1][x2]+=(data[x1][1+i-x1]);}

printf("%d",f[m+n-1][n][n]);

return 0;

}

第三个点数据:

8 6

0 94 11 25 24 51

15 13 39 67 97 19

76 12 33 99 18 92

35 74 0 95 71 39

33 39 32 37 45 57

71 95 5 71 24 86

8 51 54 74 24 75

70 33 63 29 99 0

答案是1382 为嘛我的是1100

#1 liftist@2012-02-06 16:55:00
回复 删除
额 标题是老是。。。

坑爹了

查看更多回复
提交回复