import java.util.Scanner; /** * @program: entrance_exam * @description: 计算连续子向量的最大和和乘积最小的连续子数组(正数和负数)。 * 如{6,-3,-2,7,-15,1,2,2}的连续子向量的最大和为8,最小乘积的连续子数组为6*(-3)*(-2)*7*(-15)*1*2*2 * @author: TAO * @create: 2018-05-19 09:52 **/ /**算法思想:设置一个最大值变量,依次进行加,若是比原来的最大值大,那么就是需要更新最大值,否则,一直加 * 当加的值小于0时,就不需要进行累加。 * */ public class Exercise5 { public static void main(String[] args) { System.out.printf("输入数组元素的个数"); int n=0; Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); int []a=new int[n]; System.out.println("输入元素"); for(int i=0;i<n;i++) a[i]=scanner.nextInt(); scanner.close(); //int max=findMaxSubArr(a); int min=minProduct(a); System.out.println(min); } public static int findMaxSubArr(int []a){ int sum=0,max=0; for(int i=0;i<a.length;i++){ sum+=a[i]; if(sum>max) max=sum; if(sum<0) sum=0; } return max; } public static int minProduct(int []nums){ int min=1,mulitply=1; for(int i=0;i<nums.length;i++){ mulitply*=nums[i]; if(mulitply<min) min=mulitply; } return min; } }
连续子数组的最大和与最小积
猜你喜欢
转载自blog.csdn.net/sir_TI/article/details/80372248
今日推荐
周排行