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

    #include<iostream>
    using namespace std;
    #define N 4
    
    void max(int a[],int &s,int &jmin,int &jmax)
    {
        int sum=a[0],b=a[0],x=0,y=0;
        int    j=1;
        while((j-x<N)&&x<N)  
        {  
            if(b>=0)          
            {
                b=a[j%N];
                if(j<N)
                    x=j;
                else
                    break;
            }  
            else  
                b+=a[j%N];  
            if(sum>=b)  
            { sum=b;y=j;}  
            j++;
        } 
        sum=0;
        for(int i=y+1;i<x+N;i++)
            sum+=a[i%N];
        s=sum;jmin=y+1;jmax=x+N-1;
        int z=y%N;
        if(x>=z)
        {
            j=1;sum=a[0];b=a[0];x=0;y=0;
            while(j<N)  
            {  
                if(b<0)          
                { b=a[j%N];x=j;}  
                else  
                    b+=a[j%N];  
                if(sum<=b)  
                { sum=b;y=j;}  
                j++;
            } 
            
            s=sum;jmin=x;jmax=y;
        }
        else if((x==0)&&(y==(N-1)))
        {
            sum=a[0];b=a[0];x=0;y=0;
            for(int o=1;o<N;o++)
            {
                if(a[o]>sum)
                {sum=a[o];x=o;y=o;}
            }
            s=sum;jmin=x;jmax=y;
        }
    }
    int main()
    {
        int a[N]={0,0,0,0};
    
        cout<<"随机产生数组为:";
        for(int i=0;i<N;i++)
            cout<<a[i]<<"  ";
        cout<<endl;
    
        int s=a[0],jmin=0,jmax=0;
        max(a,s,jmin,jmax);
    
        cout<<"相应子数组为:";
        cout<<jmin<<endl<<jmax<<endl;
        for(int i=jmin;i<=jmax;i++)
            cout<<a[i%N]<<" ";
        cout<<endl;
    
        return 0;
    }

    设计思路:介于第一次与第二次都有类似的问题,于是将两次的代码结合,互相弥补。
    后感:前两次的程序都有相同的问题,但是两个程序是互补的,所以将两个程序结合,再出现问题,继续改。。。。。。

  • 相关阅读:
    JS_Boolean Logic
    js String
    .Net之路(二)简介
    自考 操作系统概论计算机系统
    IT大学生最重要的五个能力
    数据库表及字段命名规范
    简述MVC分层
    .Net之路(一)概述
    设计模式(4)迭代器模式
    .Net之路(三)如何连接数据库?
  • 原文地址:https://www.cnblogs.com/xiangwo/p/4431741.html
Copyright © 2011-2022 走看看