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

ลดต้นทุนด้วยการเปลี่ยนด้วยอย่างอื่นที่อนุญาตใน C++


สมมติว่าเรามีอาร์เรย์ที่มีองค์ประกอบ N เราต้องลบองค์ประกอบออกจากอาร์เรย์โดยทำตามการดำเนินการที่กำหนด การดำเนินการเป็นเหมือน เราต้องเลือกตัวเลขสองตัวใด ๆ ของอาร์เรย์ และลบขนาดใหญ่กว่า ค่าใช้จ่ายที่รวมอยู่ในการดำเนินการนี้จะเท่ากับจำนวนที่น้อยกว่า เราต้องลบองค์ประกอบเพียงครั้งละหนึ่งรายการ ตามการดำเนินการนี้ และดำเนินงานด้วยต้นทุนขั้นต่ำ สมมติว่าอาร์เรย์มี {4, 2, 5} ฉันเอา 4 กับ 2 ลบ 4 โดยจ่ายราคา 2 จากนั้นเราลบ 5 อีกครั้งด้วยราคา 2

วิธีการนั้นง่ายเกินไป อย่างที่เราทราบกันดีอยู่แล้วว่าต้นทุนจะเท่ากันกับอันที่เล็กกว่า ดังนั้นเพื่อลดต้นทุน เราจะเอาอันที่เล็กที่สุดและองค์ประกอบอื่นๆ บางส่วนออก แล้วเอาอันที่ใหญ่กว่าออก ต้นทุนก็จะเล็กลงทุกที ดังนั้นค่าใช้จ่ายทั้งหมดจะเป็น (N – 1)*จำนวนที่น้อยที่สุด

ตัวอย่าง

#include <iostream>
#include <algorithm>
using namespace std;
int getMinimumCost(int arr[], int n) {
   int smallest = *min_element(arr, arr+n);
   return smallest * (n - 1);
}
int main() {
   int arr[] = { 4, 2, 5 };
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Minimum cost: " << getMinimumCost(arr, n);
}

ผลลัพธ์

Minimum cost: 4