和最大子数组

设计思路

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

程序源代码

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

 

}

截图

技术分享

总结

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

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

项目计划总结 

技术分享

时间日志记录  

技术分享

缺陷日志记录

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。