描述
八戒学完了算术,师父打算给八戒一个买礼物的任务。他们即将到达女儿国,师父给八戒 m 文钱,要他去买些礼物,用作给女儿国国王、大臣们的见面礼。因为不知道即将来迎接他们的人数,为了尽可能让女儿国的小姐姐们高兴,师父要八戒尽量多买几件礼物备着。
领了任务,拿了盘缠的八戒来到不远处的礼品店,他发现店里一共有 n 件商品,每件商品各有价格。于是,八戒要算一算手里的 m 文钱,最多能买几件礼物。
输入
共2行,第一行包含两个整数 n 和 m ,n 表示礼物总数,m 表示师傅给八戒的钱数;
第二行包含 n 个整数,分别表示每件礼物的价格。
题目保证:
1<= n <=500
1<= m <=10000
1<= 每件礼物的价格 <=1000
输出
一个整数,表示八戒最多能买到的礼物数量。
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,m; //礼物总数和钱数
cin>>n>>m;
int price[n]; //每件礼物的价格
int temp;
for(int i=0; i<n; i++){
cin>>price[i]; //从控制台依次读取价格
}
//对价格进行升序排序
sort(price, price + n);
int sum=0;//表示礼物价格总
int count = 0; // 已购买的礼物数量
for (int i = 0; i < n; i++) {
if (sum + price[i] <= m) { // 如果当前礼物可以购买
sum += price[i]; // 更新总价
count++; // 增加已购买的礼物数量
} else { // 如果当前礼物不能购买
break; // 退出循环
}
}
cout<<count<<endl;
return 0;
}