本周的算法题
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
思路很简单,先排序,记录0与负数的个数
若Flag>=2 ,则乘积最大的情况就是两个负数相乘,再乘以第一个整数
则其余情况就是,前三个数相乘
int n ,a[N] = {0} ,i ,j ,t ,sum1 ,sum2 ,sum;
int flag = 0;
printf("输入数字总个数:");
scanf("%d",&n);
printf("初始化数组:");
for(i = 0;i < n;i ++){
scanf("%d",&a[i]);
if(a[j] <= 0){
flag ++;
}
}
for(i = 0;i < n;i++){
for(j = 0;j < n - 1 - i;j++){
if(a[j] < a[j + 1]){
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for(i = 0;i < n;i++){
printf("%5d",a[i]);
}
if(flag >= 2){
sum = a[0] * a[i - 1] * a[i - 2];
}else{
sum = a[0] * a[1] *a[2];
}
printf("\n%d",sum);
return 0;