• 一维环型数组


    一 题目及要求:

          题目:返回一个整数数组中最大子数组的和

          要求(新加):①如果数组A[0]...A[j-1]首尾相邻,允许A[i-1]...A[n-1],A[0]...A[j-1]之和最大;②同时返回最大子数组的位置。

    二 设计思想:

         这个题目我们的思想还是延续以前一维数组的思想,只不过做了一点点改变,比如数字是五个,1,2,3,-1,-1.我们开辟的数组空间则是10个,

    将这五个数再存一遍,也就是1,2,3,-1,-1,1,2,3,-1,-1.使用循环,是每次的循环数都数五个,比如第一次循环找出1,2,3,-1,-1中的

    连续最大和,第二次循环则找出2,3,-1,-1,1中的最大连续数,以此类推。

    三 实验代码

       

    #include<iostream.h>
    #include<time.h>
    #include<stdlib.h>
    int main()
    {
        int arry[20];
        int start,end,i;
        long sum,max;
        cout<<"Please input 10 numbers:"<<endl;
        for( i=0;i<10;i++)
        {
            cin>>arry[i];
            arry[i+10]=arry[i];
        }
        max=arry[0];
        start=0;
        end=0;
        for(int j=0;j<10;j++)
        {
            sum=0;
            for(int k=j;k<10+j;k++)
            {
                sum=sum+arry[k];
                if(sum>max)
                {
                    max=sum;
                    start=j+1;
                    end=k+1;
                }
            }
        }
        cout<<"MAX IS"<<" "<<max<<endl;
        cout<<"START:"<<"The"<<" "<<start<<"th"<<" "<<"number"<<"    "<<"END:"<<"The"<<" "<<end%10<<"th"<<" "<<"number"<<endl;
        cout<<"These numbers are:";
        for(int c=0;c<end-start+1;c++)
        {
            cout<<arry[start+c-1]<<"  ";
        }
    }

    四 实验截图

        

    五 实验感想

        这次实验我们最大的感想就是,如果一个程序搞懂了,再加一些条件,再做一些改变,都可以从最原始的程序找到突破口,

    这次程序我们的主要思想和上次没有什么区别,只做了小改变就成功了,当堂就编了出来,所以也很兴奋,当然和搭档聪明的

    脑袋也脱不开关系。

  • 相关阅读:
    springboot项目使用AOP切面记录用户操作日志
    SpringBoot之——log4j日志配置案例
    IDEA--IDEA debug断点调试技巧
    LINUX FG、BG、JOBS命令用法
    消息队列学习记录
    JDK1.8下载与安装以及配置环境变量
    mysql 时间戳转换为年月日时分秒
    Java关于ExecutorService线程池的使用简介
    idea实现热部署
    MySQL 行行比较sql写法
  • 原文地址:https://www.cnblogs.com/shishi1993-/p/4378389.html
Copyright © 2020-2023  润新知