zoukankan      html  css  js  c++  java
  • hdu1231最大连续子序列

    如题,求最大连续子序列和

    注意的是,全为负的情况比较特殊

    直接用1003的代码,改改也就过了

    这里用第三组数据演示一下算法的过程。

    i 0 1 2 3 4 5
    a[i] 5 -8 3 2 5 0


    《《maxsum=temsum=5;start=end=0;

    i=1

         temsum=5-8=-3;

    i=2

         temsum<0;

         start=2;temsum=3;maxsum=5

    i=3

         temsum>0;  temsum=3+2=5,maxsum=5,不变。

    i=4

        temsum>0;temsum=5+5=10;

        temsum==10>maxsum==5;

        maxsum=10,start=2,end=4;

    i=5

        temsum>0;temsum=10+0=10;

        start,end,maxsum 不做修改

    所以输出maxsum:10, a[2]:3, a[4]:5

        

    #include <iostream>
    using namespace std;
    int a[100010];
    bool flag;
    int main()
    {
    	int n;
    	while(scanf("%d",&n))
    	{
    		if(!n)
    			break;
    		bool flag=true;
    		for(int i =0;i<n;i++)
    		{
    			scanf("%d",&a[i]);
    			if(a[i]>=0)
    				flag=false;
    		}
    		if(flag)
    		{
    			printf("0 %d %d
    ",a[0],a[n-1]);
    			continue;
    		}
    		int maxsum=a[0],tempsum=a[0];
    		int start=0,end=0, itemp=0;
    		for(int i=1;i<n;i++)
    		{
    			if(tempsum<0)
    			{
    				tempsum=0;
    				itemp=i;
    			}
    			tempsum+=a[i];
    			if(tempsum>maxsum)
    			{
    				maxsum=tempsum;
    				start=itemp;
    				end=i;
    			}
    		}
    		printf("%d %d %d
    ",maxsum,a[start],a[end]);
    	}
    	return 0;
    }
    



  • 相关阅读:
    Unity Shader入门精要学习笔记
    Unity Shader入门精要学习笔记
    zabbix_server部署,启动,及端口未监听问题
    Linux Git服务器安装
    GitHub
    nginx 认证访问web
    Jenkins可持续集成
    svn
    mariadb安装配置
    nginx跟tp5无法加载控制器
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082140.html
Copyright © 2011-2022 走看看