vlambda博客
学习文章列表

【贪心算法】练习题:John搭积木

题目描述:

John 有 n 块积木(1 <= n <= 1000),每块积木有自己的高度 Hi(1 <= Hi <= 1000),John 的桌子高度为 B。积木垂直摆放可以叠加高度,当然积木的数目越少越安全,John 最少使用多少块积木就可以使积木的总高度不低于桌子呢,请你帮助 John 找到积木数目最少的方案。 

输入描述:

第 1 行两个整数 n 和 B, 表示积木的总数目和桌子的高度。第 2到n+1 行:第 i+1 行为整数 Hi。 

输出描述: 

一行,为到达桌子高度所需要的积木的最少数目。 

样例输入】

6 40

6

18

11

13

19

11 


【样例输出】

 3

答案:

#include <bits/stdc++.h>using namespace std;int a[1005];
int main(){ int n, b; cin >> n >> b; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort(a + 1,a + 1 + n); int tot = 0,hight = 0; for(int i = n;i>=1;i--) { if(hight >= b) { break; } tot++; hight += a[i]; } cout << tot; return 0;}

解析:

运行结果: