使用替换以最小化成本,在 C++ 中允许其他元素


假设我们有一个包含 N 个元素的数组。我们必须按照给定的操作从数组中删除元素。操作与选择数组中的任意两个数字,并删除较大的数字的操作类似。此操作中包含的成本与较小的数字相同。我们必须一次只删除一个元素,基于此操作,并以最低成本执行任务。假设数组中包含{4, 2, 5}。我取 4 和 2,通过支付成本 2 来移除 4,然后再次用成本 2 移除 5。

该方法很简单。众所周知,成本将与较小的数字相同,因此为了降低成本,我们将取最小的数字,以及其他一些元素,然后删除较大的数字,成本会一直是最小的。因此,总成本为 (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

更新于: 2019-10-21

150 次浏览

开启您的 职业生涯

通过完成课程,获得认证

开始学习
广告