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

本文探讨了一个算法问题,即在一个整数数组中找出具有最大和的连续子数组,并提供了相应的代码实现和结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

                       

 

转载于:https://www.cnblogs.com/hushunli/p/4593570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值