输出一维环形数组中最大子数组和最大子数组的位置

组员 石鹤李海超

一、题目

输出一维环形数组中最大子数组的和 和最大子数组的位置

二、设计思想

把原数组扩大一倍,再把原数组放到后边,只需改变上次试验是循环变量即可求出最大子数组的和。

三、源代码

#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]<<"  ";
    }
}

四、结果截图

五、实验心得

实验中没有遇到太大问题,我俩显示讨论得出了设计思想,然后经过对上次题目的改进的除了这次试验的程序,运行正确。

希望以后继续进步。

六、相片

 
原文地址:https://www.cnblogs.com/weaponx/p/4378805.html