首页 > 代码库 > 课堂练习
课堂练习
思路:
求循环数组的最大子数组,相当于将数组重复两遍,然后再求出这个重复两遍的数组求出它的最大子数组即可。这个题目的实质是弄清楚循环数组求最大子数组即是讲所有数组重复一遍然后再用一般的方法求最大子数组。
具体代码:
package example1; import java.util.Scanner; public class example1 { public static void main(String args[]){ int num; Scanner in = new Scanner(System.in); System.out.println("输入数组中元素的个数:"); num = in.nextInt(); int []a = new int[num]; //定义数组a for(int i = 0;i < num;i ++) { a[i] = (int)(Math.random()*30 - 10); //产生的随机数范围在-10 - 10 } System.out.println("产生的数组元素的值为:"); for(int i = 0;i < num;i ++){ System.out.print(a[i] + " "); } System.out.print("\n"); int []b = new int[a.length*2]; //定义一个数组b,b中的元素为a中元素重复两次 System.out.println("生成的环形数组为:"); for(int i = 0;i < b.length;i ++){ b[i] = a[i % a.length]; System.out.print(b[i] + " "); } System.out.print("\n"); int sum = b[0],temp = b[0];//将数组最大值初始为b数组中第一个元素 int s = 0; int i = 1; while(i < b.length / 2 + s) { temp = temp + b[i]; if(temp < b[i]) { temp = b[i]; s = i; } if(temp > sum) { sum = temp; } i ++; } System.out.println("最大的子数组为:" + sum); } }
运行截图:
课堂练习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。