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; }



转载于:https://www.cnblogs.com/lcchuguo/p/5050228.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值