定义一个数组返回最大子数组的值(1)

对于老师上课的题目,要想获得子函数最大值,首先进行数组的遍历,在遍历起初,对最大值进行初始化为数组的第一个元素,每次遍历,求得该子数组的和,并将此和与最大值进行比较,若小于

最大值,则进行下一次的遍历,直到结束。此处用到三个for循环,来进行次数的控制。第一个 for(i = 0; i <length; i++),用来完成所有数组的循环,第二个for(j = i; j

<length; j++)用来表示从第几个元素开始,寻找子数组,第三个 for( k = i; k <= j; k++) ,用来获取每个子数组的和,等到遍历完全结束,返回最大值输出。




package bigzishuzu; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int [] num=new int[30]; int n; int i,j; int cishu; int sum; int max; max=0; cishu=0; System.out.println("请输入数组的个数:"); @SuppressWarnings("resource") Scanner scan=new Scanner(System.in); n=scan.nextInt(); int geshu=((1+n)*n)/2; int [] daxiao=new int[300]; for(i=0;i<n;i++) { //完成数组的的输入 num[i]=scan.nextInt(); } for(i=0;i<n-0;i++) { sum=0; for(j=i;j<n;j++) { sum=sum+num[j]; System.out.println("第"+cishu+"个子数组的和为:"+sum); daxiao[cishu]=sum; cishu++; } } max=daxiao[0]; for(int l=0;l<geshu;l++) { if(max<daxiao[l]) { max=daxiao[l]; } } System.out.println("最大子数组和为:"+max); } }

转载于:https://www.cnblogs.com/muailiulan/p/11070544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值