求最大字段和

求最大字段和(蛮力法)

蛮力法

一个由n个整数(可以有负整数)组成的序列:a1,a2,…,an,寻找它的最大字段和,例如:A1=a1,A2=a1+a2,A3=a1+a2+a3;B2=a2+a3;

1、用序列存放在数组中,下标从0-n;例如:

-12405
01234

2、初始化定义两个变量:sum、maxsum ;sum用来存放连续字段的和,与maxsum比较,比maxsum大,将sum值赋给maxsum,所有可能的连续字段求和后,保证maxsum是最大的字段和。

3、编写maxSum方法:定义两个指针:i,j使用两个for循环;

               int maxSum=0;for(int i=0;i<n;i++){int sum=0;for(int j=i;j<n;J++){

​                    sum+=a[j];      //sum=sum+a[j]if(sum>maxSum){

​                     maxSum=sum;   //将大值一直赋给maxSum              }}}

在i=0的循环内嵌套for循环,j从下标0开始,遍历,sum=sum+a[j];判断sum与maxSum的大小,将大值赋给maxSum。

遍历完内层循环,i++;i指向下标1,内层循环同样重复以上步骤。

伪代码:

输入:a[],数组长度n

输出:最大字段和maxSum

  1. 传入数组元素,数组长度n;

  2. 定义sum存放字段和,maxSum存放最大字段和,定义指针:i,j

  3. 进入第一个for循环,i=0,i<n,I++;

    3.1maxsum=0;进入第二个for循环,j=i,J<n,J++;

    ​ 3.1.1sum+=a[j];如果sum>maxSum;maxSum=sum;

  4. 重复以上步骤,求出maxSum;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值