zoukankan      html  css  js  c++  java
  • 首尾相连最大子数组和(2)

    #include<iostream>
    using namespace std;
    #define Nu 5
    
    int main()
    {
        int a[Nu]={2,-2,4,-6,1};
    
        cout<<"随机产生数组为:";
        for(int i=0;i<Nu;i++)
            cout<<a[i]<<"  ";
        cout<<endl;
    
        int sum=a[0],b=a[0],x=0,y=0;
        int    j=1;
        while((j-x<Nu)&&x<Nu)  
        {  
            if(b>0)          
            {
                b=a[j%Nu];
                if(j<Nu)
                    x=j;
                else
                    break;
            }  
            else  
                b+=a[j%Nu];  
            if(sum>b)  
            { sum=b;y=j;}  
            j++;
        } 
    
        cout<<x<<endl<<y<<endl;
        sum=0;
        for(int i=y+1;i<x+Nu;i++)
            sum+=a[i%Nu];
        cout<<"相邻子数组最大和为:"<<sum<<endl;
    
        cout<<"相应子数组为:";
        for(int i=y+1;i<x+Nu;i++)
            cout<<a[i%Nu]<<" ";
        cout<<endl;
    
        return 0;
    }

    成员:宋雨佳 周雪莹

    设计思路:继第一次的首尾相连最大子数组和,这是改进版,因为当1 2 3 -1 2时,-1是不能被舍弃的,所以就反其道而行,求最小的子数组和,余下的便是最大子数组。

    后感:还屁颠屁颠的觉得首尾相连简简单单就做完了,在帮同学看程序时发现了自己程序的不足,但是这次程序也不是很完善,全负数和全正数没有考虑,哎呀不想写了!目前还没有举出不符合算法的数组,考虑不完整,以后发现继续完善

  • 相关阅读:
    mysql日期加减
    cron 配置计划任务的书写格式(quartz 时间配置)
    空值排序问题
    update 表名 set 字段=值,数据更新
    insert into 数据插入
    SQL里面的char类型
    SQL使用代码创建数据完整性,约束
    SQL制表
    sql创建数据库
    验证码
  • 原文地址:https://www.cnblogs.com/xiangwo/p/4430484.html
Copyright © 2011-2022 走看看