题意:购物打折:每三件商品,只需支付两种最贵物品的钱,可以采取不同的购物组合策略,给一组物品,求最大折扣策略。
很显然,最贪心的策略是,每次都从剩余的物品中选取最贵的三种进行支付,即可获得最大折扣。
输入数据量比较大,可以用scanf减少用时。
代码如下:
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int main()
- {
- long t, n, k, sum, p[20000];
- cin >> t;
- while (t--)
- {
- cin >> n;
- for (k = 0; k < n; ++k)
- {
- cin >> p[k];
- }
- sort(p, p + n);
- sum = 0;
- for (k = n - 3; k >= 0; k -= 3)
- {
- sum += p[k];
- }
- cout << sum << endl;
- }
- return 0;
- }
本文介绍了一种购物场景下的最大折扣策略算法。通过将商品价格按降序排列并选择每组中最便宜的商品免单的方式,实现顾客购买商品时的最大优惠。算法采用贪心策略,确保了最优解。
274

被折叠的 条评论
为什么被折叠?



