zoukankan      html  css  js  c++  java
  • MOOC 1.3 最大子列和

    // 求最大子列和
    #include <cstdio>
    int a[5];
    
    // O(n^3) 
    int MaxSeq1(int a[], int n)
    {
    	int max = 0, sum = 0;
    	for(int i = 0; i < n; ++ i)
    	{
    		for(int j = i; j < n; ++ j)
    		{
    			sum = 0;
    			for(int k = i; k <= j; ++ k)
    			{
    				sum += a[k];
    			}
    			if(sum > max)	max = sum;
    		}
    	}
    	return max;
    } 
    
    // O(n^2)
    int MaxSeq2(int a[], int n)
    {
    	int max = 0, sum = 0;
    	for(int i = 0; i < n; ++ i)
    	{
    		sum = 0;
    		for(int j = i; j < n; ++ j)
    		{
    			sum += a[j];
    			if(sum > max)	max = sum;
    		}
    	}
    	return max;
    } 
    
    // 在线处理 O(n)
    // "在线"的意思是指每输入一个数据就进行及时处理
    // 在任何一个地方终止输入, 算法都能正确给出当前解 
    int MaxSeq4(int a[], int n)
    {
    	int sum = 0, max = 0;
    	for(int i = 0; i < n; ++ i)
    	{
    		sum += a[i];
    		if(sum > max)	max = sum;
    		else if(sum < 0)	sum = 0;
    	}
    	return max;
    }
    
    int main()
    {
    	for(int i = 0; i < 5; ++ i)
    	{
    		scanf("%d", &a[i]);
    	}
    	printf("%d
    ", MaxSeq4(a, 5));
    	
    	return 0;
    }
    
    /*
    1 6 -5 9 -3
    11
    */
    

      

  • 相关阅读:
    Java集合 使用Map
    Java集合 编写equals方法
    yiyou本地安装出现版本问题
    网站地图制作
    SEO小爬虫工具文章排版
    知名企业招聘技术员题库
    测试上网速度
    邮件传输协议软件
    JSONP跨域问题
    织梦搬家
  • 原文地址:https://www.cnblogs.com/mjn1/p/11420267.html
Copyright © 2011-2022 走看看