• 最大子数组的和首尾相接(3)


    #include<iostream>

    using namespace std;

    #define Nu 5

    int main()

    {

        int a[Nu]={1,2,3,-1,4};

        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++;

        } 

        sum=0;

        for(int i=y+1;i<x+Nu;i++)

            sum+=a[i%Nu];

        int z=y%Nu;

        if(x>z)

        {

            j=1;sum=a[0];b=a[0];x=0;y=0;

            while(j<Nu)  

            {  

                if(b<0)          

                { b=a[j%Nu];x=j;}  

                else  

                    b+=a[j%Nu];  

                if(sum<=b)  

                { sum=b;y=j;}  

                j++;

            } 

            cout<<x<<endl<<y<<endl;

            cout<<"相应子数组为:";

            for(int i=x;i<=y;i++)

                cout<<a[i]<<" ";

            cout<<endl;

        }

        else

        {

            cout<<x<<endl<<y<<endl;

            cout<<"相应子数组为:";

            for(int i=y+1;i<x+Nu;i++)

                cout<<a[i%Nu]<<" ";

            cout<<endl;

        }

        

        

        cout<<"相邻子数组最大和为:"<<sum<<endl;

        

        

        return 0;

    }

    设计思路:介于第一次与第二次都有类似的问题,于是将两次的代码结合,互相弥补。

    后感:本来觉得很简单,后来测试发现问题很多,这个可能还有错,继续努力吧

  • 相关阅读:
    路由重分布(二)
    linux系统命令的收集 第一部分
    如何在VM软件中安装Linux系统
    Spring boot连接MongoDB集群
    jQuery中防止表单提交两次的方法
    Java中使用HTTP阻塞式调用服务器API
    本地项目初始化git推送到服务器
    前端页面调用Spring boot接口发生的跨域问题
    jQuery中异步问题:数据传递
    Git中修复bug
  • 原文地址:https://www.cnblogs.com/xiaowumao/p/4433067.html
Copyright © 2020-2023  润新知