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是不能被舍弃的,所以就反其道而行,求最小的子数组和,余下的便是最大子数组。

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

  • 相关阅读:
    Codeforces 1265A Beautiful String
    1039 Course List for Student (25)
    1038 Recover the Smallest Number (30)
    1037 Magic Coupon (25)
    1024 Palindromic Number (25)
    1051 Pop Sequence (25)
    1019 General Palindromic Number (20)
    1031 Hello World for U (20)
    1012 The Best Rank (25)
    1011 World Cup Betting (20)
  • 原文地址:https://www.cnblogs.com/xiangwo/p/4430484.html
Copyright © 2011-2022 走看看