码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 4561 连续最大积->DP

时间:2015-06-26 15:03:43      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:c   算法   c++   编程   acm   

分析:dp[i][0]表示到第i个数成绩为负时的最大积个数,dp[i][1]表示到第i个数成绩为正时的最大积个数。

#include<iostream>
using namespace std;

#define N 10005
#define max(a,b) ((a)>(b)?(a):(b))

int dp[N][2];

int main()
{
	int T,t,i,n,sum,x;

	t=1;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		sum=0;
		dp[0][0]=dp[1][0]=0;
		for(i=1;i<=n;i++)
		{
			scanf("%d",&x);
			if(x==0)
				dp[i][0]=dp[i][1]=0;
			else if(x==2)
			{
				if(dp[i-1][0]!=0)
					dp[i][0]=dp[i-1][0]+1;
				else
					dp[i][0]=0;
				dp[i][1]=dp[i-1][1]+1;
			}
			else if(x==-2)
			{
				dp[i][0]=dp[i-1][1]+1;
				if(dp[i-1][0]!=0)
					dp[i][1]=dp[i-1][0]+1;
				else
					dp[i][1]=0;
			}
			sum=max(sum,dp[i][1]);
		}
		printf("Case #%d: %d\n",t++,sum);
	}
    return 0;
}


HDU ACM 4561 连续最大积->DP

标签:c   算法   c++   编程   acm   

原文地址:http://blog.csdn.net/a809146548/article/details/46649537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!