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;
}
}
连续子数组的最大和与最小积
最新推荐文章于 2023-09-02 12:04:27 发布