一个整数数组中最大字数组二

返回整数数组中最大子数组的和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.结果截图:

                       

 

posted on 2015-06-22 17:42  简简单单爱  阅读(181)  评论(0编辑  收藏  举报