Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลคูณสูงสุดของสามตัวเลขใน C++

ปัญหา

สมมติว่าเรามีอาร์เรย์จำนวนเต็ม เราต้องหาสามตัวเลขที่ผลคูณของพวกมันสูงสุด แล้วคืนค่าผลคูณสูงสุดนั้น

เช่น ถ้าผนวกเข้าเป็น [1,1,2,3,3] ผลลัพธ์จะเป็น 18 เนื่องจากสามสมาชิกคือ [2,3,3]

วิธีแก้ปัญหา

  1. จัดเรียงอาร์เรย์ nums
  2. l := ขนาดของ nums
  3. a := nums[l - 1], b := nums[l - 2], c := nums[l - 3], d := nums[0], e := nums[1]
  4. คืนค่าค่าสูงสุดของ a * b * c และ d * e * a

ตัวอย่างโค้ด C++

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    int maximumProduct(vector<int>& nums) { 
        sort(nums.begin(), nums.end()); 
        int l = nums.size(); 
        int a = nums[l - 1], b = nums[l - 2], c = nums[l - 3], d = nums[0], e = nums[1]; 
        return max(a * b * c, d * e * a); 
    } 
}; 

int main(){ 
    Solution ob; 
    vector<int> v = {1,1,2,3,3}; 
    cout << (ob.maximumProduct(v)); 
}

อินพุต

{1,1,2,3,3}

เอาต์พุต

18