• 返回一个整数数组最大子数组的和


    第一种算法(很麻烦)

    设计思想:

    1.通过随机数产生十个数。

    2.声明一些变量,包括:

    flag —— 用来控制子数组的长度,从一到十递增。

    sum —— 记录最大子数组的和,初始值为a[0]。

    s_temp —— 记录不断更新的子数组的和。

    3.通过一个while语句和两个for循环实现。需注意第二个for循环中,为防止数组越界,使用Math.min方法。

    源代码:

    		int a[] = new int[10];
    		for(int i = 0;i < 10;i++){
    			a[i] = (int)(Math.random() * 20 - 10);   // 产生的随机数范围在-9 ~ 9
    		}
    		System.out.print("产生的随机数的值为:");
    		for(int i = 0;i <10;i++){
    			System.out.print(a[i] + " ");
    		}
    		System.out.print("
    ");
    		
    		int sum = a[0],s_temp = 0,flag = 1;
    		while(flag < 10){
    			for(int j = 0;j < 10;j++){
    				s_temp = 0;
    				for(int k = j;k < Math.min(j+flag,10);k++){
    					s_temp = s_temp + a[k];
    				}
    				if(s_temp > sum){
    					sum = s_temp;
    				}
    			}
    			flag++;
    		}
    
    		System.out.println("最大子数组的和为:" + sum);
    		
    	}
    

      

    运行结果:

    第二种方法:

    设计思想:

    当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。所以,当接下来的和使现在的和更小时,抛弃它。当目前的和大于最大值,更新最大值。

    源代码:

     1         int a[] = new int[10];
     2         for(int i = 0;i < 10;i++){
     3             a[i] = (int)(Math.random() * 20 - 10);   // 产生的随机数范围在-9 ~ 9
     4         }
     5         System.out.print("产生的随机数的值为:");
     6         for(int i = 0;i <10;i++){
     7             System.out.print(a[i] + " ");
     8         }
     9         System.out.print("
    ");
    10         int sum = a[0],s_temp = a[0];
    11         for(int i = 1 ;i < 10;i++){
    12             s_temp = s_temp + a[i];
    13             if(s_temp < a[i]){
    14                 s_temp = a[i];16             }
    17             if(s_temp > sum){
    18                 sum = s_temp;21             }
    22         }
    23         
    24         System.out.println("最大子数组的和为:" + sum);
  • 相关阅读:
    300+值得收藏的设计师免费资源站
    Apache 隐藏入口文件 index.php
    Nginx 虚拟主机下支持Pathinfo并隐藏入口文件的完整配置
    Java多线程
    Java注解
    Java异常机制
    面向对象
    数组
    Java方法(函数)
    Java流程控制(Scanner)
  • 原文地址:https://www.cnblogs.com/jj352095583/p/4363841.html
Copyright © 2020-2023  润新知