作业总结

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

要求:程序必须能够处理1000个元素

数组中元素有正有负

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和

求所有子数组的和的最大值。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void main()
{
     int a[1000],b,c,d=0,i,j,k,t=-10000,o=-10000,n,m;
     cout<<"请输入数值范围:"<<endl;
     cin>>b>>c;
     cout<<"数组元素为:"<<endl;
     srand(unsigned(time(0)));
     for (i=0;i<1000;i++)
     {
         a[i]=rand()%(c-b+1)+b;
         cout<<a[i]<<" ";
     }
     for (i=0;i<1000;i++)
     {
         for (j=i;j<1000;j++)
         {
              d=0;
              for (k=i;k<=j;k++)
              {
                   d=d+a[k];
              }
              if (d>t) {t=d;n=i;m=j;}
         }
         if (t>o) o=t;
     }
     cout<<endl<<"最大子数组的和:"<<endl;
     for (i=n;i<=m;i++)
     {
         if (a[i]>=0)
         {
              cout<<a[i];
         }
         else cout<<"("<<a[i]<<")";
         if (i!=m) cout<<"+";
         else cout<<"=";
     }
     cout<<o<<endl;
}

运行结果如图:

总结:本次主要出现的问题就是最开始的数组没有负数,后来在网上查询了一下怎样能够让其有负数,并对其修改且符合老师要求。

猜你喜欢

转载自www.cnblogs.com/yeziaaa/p/9786353.html
今日推荐