按性价比排完先拿谁
三件物品(重量, 价值)是 (6,30)(4,24)(5,20),按每单位重量的价值从高到低排(交叉相乘比较,避开小数)。
运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Item {
int w, v;
};
int main() {
vector<Item> items = {{6, 30}, {4, 24}, {5, 20}};
stable_sort(items.begin(), items.end(), [](const Item& a, const Item& b) { return a.v * b.w > b.v * a.w; });
for (size_t i = 0; i < items.size(); i++) cout << (i ? "/" : "") << items[i].w;
cout << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)