您的位置:首页 > 其它

课堂练习四

2016-04-13 07:44 204 查看
设计思路:

①申请一个len长度的数组arr和len长度的最大和数组maxsum。

②用两个for循环嵌套,外面的for循环决定数组中开始计算的首位置,内部的for循环进行子数组最大和的运算,和大于maxsum就替换maxsum的值,小于0,则归零。

③在内部for循环中加入成环思路,判断j的值是否循环到数组的最后一个值,如果循环到最后一个值将-1赋给j,所以j就会从-1开始+1循环,直到j=i-1处停止。

④计算程序完成之后将得到的maxsum[i]的值进行比较,for循环选出最大值即可。

源程序代码

package subarraymaxadd;
import java.util.*;

public class Subarraymaxadd {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
System.out.println("请输入数组长度:");
int len = input.nextInt();
int[] arr = new int[len];
int[] maxsum = new int[len];
System.out.println("请输入数组:");
for(int i=0;i<len;i++)
{
arr[i] = input.nextInt();
}
input.close();

for(int i=0;i<len;i++)
{
maxsum[i] = arr[i];
int sum = 0;
for(int j=i;j<len;j++)
{
sum =sum + arr[j];

if(sum>maxsum[i])
{
maxsum[i]=sum;
}
if(sum<0)
{
sum=0;
}

if(j==len-1)//此处两个if语句为成环部分
{
j=-1;
}
if(j==i-1)
{
break;
}
}
}

int sum=0;
sum = maxsum[0];
for(int i=1;i<len;i++)
{
if(sum<maxsum[i])
{
sum=maxsum[i];
}
}

System.out.println("子数组的最大和为:"+sum);

}

}


结果截图:



工作照:



合作过程及体会:

在做之前我们先各自思考办法,我开始在想可以将数组变成两个数组,相当于算两遍就跟成环是一样的,但是搭档就说出了如果全是正数的话结果就不对了,果断放弃。搭档提出了两个for循环嵌套的成环方法,觉得是很合理,在编译过程中出现了一些不细心的小错误,搭档也帮找出来了。本人编程技术次于搭档,所以在合作过程中有很多要向搭档学习的地方,两个人互帮互助,效率也提高了不少,也体现出合作的重要性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: