个人作业1—数组

  这个作业上课期间做了两节课,很有感触,期间同学们也是积极地发表了自己的看法,我也体会到了编程的乐趣。

  在开始我也是绞尽脑汁地思考,但是后来也实现不了,直到看了看百度才明白了,但是这个程序有点瑕疵,数组元素只能是非负整数,后来自己也在这个基础上加以修改,终于能实现要求的功能了,题目中要求时间复杂度是O(n),于是乎我就想把程序揉到一个循环里面,后来就不对了,我仔细的找到了问题的关键所在,最后程序就是下面所示:

 package xxx;
/*
 *
 * yr
 */
import java.util.Scanner;

public class Shuzu {
    
    public static void main(String [] args) {
        //输入数组
        int n;
        System.out.print("数组元素个数:");
        @SuppressWarnings("resource")
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        
        int[]c=new int[n];
        System.out.println("输入数组元素:");
        for(int i=0;i<n;i++) {
            c[i]=scanner.nextInt();
        }
    //求出数组中的最大值
        int max=c[0];
        for(int i=0;i<n;i++) {
            if(c[i]>max) {
                max=c[i];
            }
        }
            
        
    //求最大子数组(借用百度的思想)
        int MaxSum=max;
        int Sum=0;
        for(int i=0;i<n;i++) {
            Sum+=c[i];
            if(Sum>MaxSum) {
                MaxSum=Sum;
            }
            if(Sum<0) {
                Sum=0;
            }
        }
        System.out.println("最大子数组和为:"+MaxSum);
    }
    

}

猜你喜欢

转载自www.cnblogs.com/qianmo123/p/10506540.html