课堂练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂练习相关的知识,希望对你有一定的参考价值。

思路:

         求循环数组的最大子数组,相当于将数组重复两遍,然后再求出这个重复两遍的数组求出它的最大子数组即可。这个题目的实质是弄清楚循环数组求最大子数组即是讲所有数组重复一遍然后再用一般的方法求最大子数组。

具体代码:

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);
    }  
}

运行截图:

                                                                    

 

以上是关于课堂练习的主要内容,如果未能解决你的问题,请参考以下文章

课堂练习--找水王

课堂练习四

课堂练习-找水王

课堂练习

课堂练习(水王扩展)

课堂练习找水王02