信息学奥赛一本通-编程启蒙(C++版)在线评测系统
3434:练75.2采购奖品
解题思路
- 数据结构选择:使用结构体来存储每种物品的单价和库存数量。这样可以方便地对每个物品的信息进行管理和操作。
- 贪心策略:这是解决本题的核心策略。因为要在预算内购买最多数量的物品,所以优先选择单价低的物品进行购买。先将所有物品按照单价从小到大排序,然后从单价最低的物品开始,在预算允许的情况下,尽可能多地购买该物品。
- 循环购买:通过循环遍历排序后的物品列表,每次循环都尝试购买当前物品。根据剩余预算和物品库存,计算出本次能购买的数量,更新剩余预算和购买物品的总数。当预算不足或所有物品都遍历完后,结束循环,此时得到的购买物品总数即为所求。
C++ 代码实现
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义物品结构体
struct Item {
int price;
int stock;
};
// 比较函数,用于按单价升序排序