連續子陣列的最大和與最小積
阿新 • • 發佈:2018-12-31
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; } }