HDU 2845 Beans (二)

2014-11-24 01:44:14 · 作者: · 浏览: 4
[0],dp_col[i-1][1]);
dp_col[i][1] = val;
res = max(res,dp_col[i][1]);
res = max(res,dp_col[i][0]);
continue;
}
dp_col[i][0] = max(dp_col[i-1][0],dp_col[i-1][1]);
dp_col[i][1] = max(dp_col[i-2][0],dp_col[i-2][1]) + val;
res = max(res,dp_col[i][0]);
res = max(res,dp_col[i][1]);
}
printf("%d\n",res);
}
return 0;
}

/***************************************************************
> File Name: a.cpp
> Author: SDUT_GYX
> Mail: 2272902662@qq.com
> Created Time: 2013/5/23 23:48:46
**************************************************************/

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int a[210000],dp_row[210000][2],dp_col[210000][2];
int main()
{
// freopen("data1.in","r",stdin);
int n,m;
while(scanf("%d %d",&n,&m)!=EOF)
{
for(int i=0;i<=n-1;i++)
{
for(int j=0;j<=m-1;j++)
{
int x=i*m+j;
scanf("%d",&a[x]);
}
}
int val,res=0;
for(int i=0;i<=n-1;i++)
{
val=0;
for(int j=0;j<=m-1;j++)
{
int x=i*m+j;
if(j==0)
{
dp_row[j][0] = 0;
dp_row[j][1] = a[x];
val = max(val,dp_row[j][1]);
continue;
}else if(j==1)
{
dp_row[j][0] = max(dp_row[j-1][0],dp_row[j-1][1]);
dp_row[j][1] = a[x];
val = max(val,dp_row[j][0]);
val = max(val,dp_row[j][1]);
continue;
}
dp_row[j][0] = max(dp_row[j-1][0],dp_row[j-1][1]);
dp_row[j][1] = max(dp_row[j-2][0], dp_row[j-2][1]) +a[x];
val = max(val,dp_row[j][0]);
val = max(val,dp_row[j][1]);
}
if(i==0)
{
dp_col[i][0] = 0;
dp_col[i][1] = val;
res = max(res,dp_col[i][1]);
continue;
}else if(i==1)
{
dp_col[i][0] = max(dp_col[i-1][0],dp_col[i-1][1]);
dp_col[i][1] = val;
res = max(res,dp_col[i][1]);
res = max(res,dp_col[i][0]);
continue;
}
dp_col[i][0] = max(dp_col[i-1][0],dp_col[i-1][1]);
dp_col[i][1] = max(dp_col[i-2][0],dp_col[i-2][1]) + val;
res = max(res,dp_col[i][0]);
res = max(res,dp_col[i][1]);
}
printf("%d\n",res);
}
return 0;
}