和最大子数组

设计思路

实在没有其他思路,只有将所有子数组的和算出来,再进行比较得到最大值和子数组。

程序源代码

#include<iostream>

#include<ctime>

 

using namespace std;

 

void main()

{

     int a[20];             //整数数组

     int f;                 //数值范围

     int i,j,k;             //控制循环变量

     int sum,max=-100;      //和与最大值

     int m,n;               //记录子数组

 

     cout<<"请输入数值范围:";

     cin>>f;

 

     srand((unsigned) time(NULL));

     for (i=0;i<20;i++)

     {

         a[i]=(rand()%2?-1:1)*rand()%f;

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

     }

     cout<<endl;

 

     for (i=0;i<20;i++)

     {

         for (j=0;j<=i;j++)

         {

              sum=0;

              for (k=j;k<=i;k++)

                   sum=sum+a[k];

              if (sum>max)

              {

                   max=sum;

                   m=j;

                   n=i;

              }

         }

     }

 

     cout<<"子数组的最大值为:"<<max<<endl;

     cout<<"子数组是第"<<m+1<<"个数,到第"<<n+1<<"个数。"<<endl;

     cout<<"子数组是:";

     for (i=m;i<=n;i++)

     {

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

     }

     cout<<endl;

 

}

截图

总结

设计的思路决定了一个程序的代码利用率和时间复杂度,思路的清晰程度决定了编写程序的流畅程度;这道题我的思路有点混乱,编写的很困难,就这,还是没想到好的方法!!

时间复杂度还是没达到要求。

项目计划总结 

时间日志记录  

缺陷日志记录

原文地址:https://www.cnblogs.com/D9412/p/4360781.html