HDU ACM 2845 Beans

题意:

1、 对于每一行来说,,相邻的数不可同时取;2、同样对于列来说,相邻的行也不能同时取;

3、因此可得状态方程:dp[i]=dp[i-1]>(dp[i-2]+a[i])?dp[i-1]:dp[i-2]+a[i]。先对每一行运用,在对每一行求出的和作为一组运用,可得最终结果。

#include<iostream> using namespace std;int col[200001];int dp[200001];int GetMaxRow(int a[],int n){dp[0]=0;dp[1]=a[1];for(int i=2;i<=n;i++)dp[i]=dp[i-1]>(dp[i-2]+a[i])?dp[i-1]:dp[i-2]+a[i];return dp[n];}int main() { int m,n,i,j;int a[200001],sum;while(scanf("%d%d",&m,&n)==2){for(j=1;j<=m;j++){for(i=1;i<=n;i++)scanf("%d",&a[i]);col[j]=GetMaxRow(a,n);}sum=GetMaxRow(col,m);printf("%d\n",sum);}return 0; }

可以以心感悟,以此沉淀,足矣;耳听佳音,目极美好,

HDU ACM 2845 Beans

相关文章:

你感兴趣的文章:

标签云: