zoukankan      html  css  js  c++  java
  • 一个整数数组中最大字数组二

    返回整数数组中最大子数组的和2

     

    1.题目:

     

    返回一个整数数组中最大子数组的和。

     

    2.要求:

     

    1)要求程序必须能处理1000个元素;

     

    2)每个元素都是int32类型的。

     

    3.设计思路:

     

    处理1000个元素时让用户自己输入想要的数组长度,看看运行时出处理时间的长短,再在源程序中改善这一问题。

     

    处理大数溢出时,由于随机函数生成的数不算太大,我们尽量让其最终存入数组的元素接近最大范围,进而求和时才可能出现大数溢出的情况。

     

    4.源代码:

     

     1 #include<iostream>

     2 #include<stdlib.h>

     3 using namespace std;

     4 #include <ctime>

     5 #include <cstdlib>

     6 #define MAX 100000

     7 int main()

     8 {

     9     int k,t=0,o=0;

    10     int n=0,m=0;

    11     int b[MAX];

    12     int a[MAX];

    13     cout<<"请输入数组中整数的个数:"<<endl;

    14     cin>>k;

    15     srand(time(0));

    16     for(int i=0;i<k;i++)

    17     {

    18         a[i]=rand()%100-50;

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

    20     //    cin>>a[i];

    21     }

    22    

    23     for(int l=1;l<k+1;l++)

    24     {

    25         for(i=0;i<k-l+1;i++)

    26         {

    27             for(int j=i;j<i+l;j++)

    28             {

    29                 if(j>k-1)

    30                 {

    31                     break;

    32                 }

    33                 else

    34                     m=m+a[j];

    35             }

    36             b[n]=m;

    37             m=0;

    38             n=n+1;

    39         }

    40     }

    41     int max=b[0];

    42     for(i=1;i<n;i++)

    43     {

    44         if(max<b[i])

    45             max=b[i];

    46     }

    47 /*    for(i=0;i<n;i++)

    48     {

    49         if(max==b[i])

    50         {

    51             m=i;

    52         }

    53     }

    54     m=m+1;

    55     int r=k;

    56     for(int j=0;j<k;j++)

    57     {

    58         if(m>=r&&r>=0)

    59         {

    60             m=m-r;

    61             t=t+1;

    62             r=r-1;

    63         }

    64         if(m==0&&r>0&&j!=k-1)

    65         {

    66             m=m+r+1;

    67             break;

    68         }

    69         if(m==0&&r==0&&t==k)

    70         {

    71             m=m+1;

    72             break;

    73         }

    74     }*/

    75     cout<<endl;

    76     cout<<"该数组中的最大子数组的和为:"<<max<<endl;

    77     /*cout<<"这些数字为:";

    78     m=m-1;

    79     if(t==0)

    80     {

    81         t=1;

    82     }

    83     for(i=m;i<m+t;i++)

    84     {

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

    86     }

    87     for(i=0;i<n;i++)

    88         cout<<b[i]<<" ";*/

    89     return 0;   

    90 }

     

    5.结果截图:

                           

  • 相关阅读:
    AJAX注册
    文件上传加水印
    邮箱
    AJAX完整操作
    跨窗体操作
    容器布局
    EF异常类
    SQL查出字段横向拼接,如:1,2,3,4
    asp.net三层结构中,SQL助手类DbHelperSQL
    正则抓取页面信息
  • 原文地址:https://www.cnblogs.com/hushunli/p/4593570.html
Copyright © 2011-2022 走看看