HDU 1231 最大连续子序列和

这是动态规划的又一个经典问题。

这个还不是纯裸的题,需要稍微处理一下。

#include
#include
#include
#include
#include
#include
#include
#include
const int inf=0x3f3f3f3f;
const int maxn=10010;
using namespace std;

int sta[maxn];
int main()
{
    int n;
    while(scanf("%d",&n)==1,n)
    {
        memset(sta,0,sizeof(sta));
        for(int i=1;i<=n;i++) scanf("%d",&sta[i]);

        int maxsum,sum,f,l,ftemp;
        maxsum=sum=-1; f=l=ftemp=sta[1];

        for(int i=1;i<=n;i++)
        {
            if(sum>=0)
            {
                sum+=sta[i];
                if(maxsum

AC代码

 

 

过了好多个月哈,我看见自己之前写的太冗余了。

重新写了一次。

AC代码:

#include  
#include 
#include 
#include 
using namespace std;
const int maxn=1e4+5;
int main(){
	int n;
	int a[maxn];
	memset(a,0,sizeof(a));
	while(scanf("%d",&n)&&n){
		for(int i=0;ires){
				res=sum;
				s=sfake;
				d=a[i];
			}
		}
		if(res<0) printf("%d %d %d\n",0,a[0],a[n-1]);
		else{
			printf("%d %d %d\n",res,s,d);
		}
		
	}
}

 

你可能感兴趣的:(动态规划)