C++代码实现 租用游艇问题
时间: 2023-11-14 16:15:49 浏览: 82
c++玫瑰花代码.zip
租用游艇问题是一个经典的贪心算法问题,可以使用贪心思想和排序算法来解决。下面是一份 C++ 代码实现:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Yacht {
int cost;
int time;
};
bool cmp(Yacht a, Yacht b) {
return a.cost < b.cost; // 按租金从小到大排序
}
int main() {
int n, m;
cin >> n >> m; // n:游艇数量,m:租用时间
vector<Yacht> yachts(n);
for (int i = 0; i < n; i++) {
cin >> yachts[i].time >> yachts[i].cost;
}
sort(yachts.begin(), yachts.end(), cmp);
int ans = 0;
for (int i = 0; i < n; i++) {
if (m >= yachts[i].time) { // 如果当前游艇可租用
ans += yachts[i].cost;
m -= yachts[i].time;
} else { // 如果当前游艇不可租用
ans += (m * yachts[i].cost) / yachts[i].time; // 计算部分租用的租金
break;
}
}
cout << ans << endl;
return 0;
}
```
首先读入游艇数量和租用时间,然后使用一个结构体存储每艘游艇的租金和可租用时间。接着按照租金从小到大排序,然后依次遍历每艘游艇,如果当前游艇可租用,则将租金加入答案中并更新剩余租用时间,否则计算部分租用的租金。最后输出答案即可。
阅读全文