Maximum Product of Three Numbers (C++三个数的最大乘积)

459 篇文章 1 订阅

解题思路:

(1)考虑到负数的情况,我们求出最大的三个数以及最小的三个数

(2)然后分析正负性,负负得正

class Solution {
public:
    int maximumProduct(vector<int>& nums) {
        int a=-1001,b=-1001,c=-1001;
        int d=1001,e=1001,f=1001; 
        for(int i=0;i<nums.size();i++) {
	    if(nums[i]>a) c=b,b=a,a=nums[i];
	    else if(nums[i]>b) c=b,b=nums[i];
	    else if(nums[i]>c) c=nums[i];
			
	    if(nums[i]<d) f=e,e=d,d=nums[i];
	    else if(nums[i]<e) f=e,e=nums[i];
	    else if(nums[i]<f) f=nums[i];
	}
		
	if(nums.size()==3) return a*b*c;
	if(nums.size()==4) {
	    if(c>=0) return a*b*c;
	    else if(b>=0 || a>=0) return d*c*a;
	    else return a*b*c;
	}
		
	if(nums.size()==5) {
	    if(e>=0) return a*b*c;
	    else if(c>=0) return a*max(b*c,d*e);
	    else if(b>=0 || a>=0) return d*e*a;
	    else return a*b*c;
	}
		
        if(nums.size()>=6) {
	    if(d>=0 || e>=0) return a*b*c;
	    else if(f>=0 || c>=0) return a*max(b*c,d*e);
	    else if(b>=0 || a>=0) return a*d*e;
	    else return a*b*c;
	}
	return 0;
    }
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 `std::max()` 函来找出三个中的最大值。示例代码如下: ```c++ #include <iostream> #include <algorithm> int main() { int a = 10, b = 20, c = 30; int max_num = std::max(std::max(a, b), c); std::cout << "The maximum number is: " << max_num << std::endl; return 0; } ``` 输出结果为: ``` The maximum number is: 30 ``` ### 回答2: 要求找出三个中的最大值,可以使用C语言编写一个简单的程序。首先,我们需要定义三个变量,用来存储输入的三个值。然后,通过比较这三个大小,找出最大值,并将其存储在一个新的变量中。最后,输出最大值。 下面是一个示例程序的代码: ```c #include <stdio.h> int main() { int num1, num2, num3; int max; printf("请输入三个:\n"); scanf("%d %d %d", &num1, &num2, &num3); max = (num1 > num2) ? num1 : num2; max = (max > num3) ? max : num3; printf("最大值为:%d\n", max); return 0; } ``` 在程序中,我们首先使用`printf`函输出提示信息,然后使用`scanf`函依次读取三个值。接下来,通过使用条件运算符`?:`来进行比较,分别比较`num1`和`num2`的大小,将较大的值赋给`max`变量,然后再将`max`与`num3`进行比较,将结果赋给`max`变量,这样`max`就存储了三个中的最大值。最后,使用`printf`函输出最大值。 希望以上回答能够帮到你! ### 回答3: 在C语言中,可以使用if-else语句来求解三个中的最大值。下面是一个使用C语言编写的示例代码: ```c #include <stdio.h> int main() { int num1, num2, num3, max; printf("请输入三个:\n"); scanf("%d %d %d", &num1, &num2, &num3); if (num1 >= num2 && num1 >= num3) { max = num1; } else if (num2 >= num1 && num2 >= num3) { max = num2; } else { max = num3; } printf("最大值为:%d\n", max); return 0; } ``` 使用该代码,用户需要输入三个,然后程序会比较它们的大小,最后输出最大值。这里使用了if-else语句来实现多个条件的判断,确保找到最大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值