【贪心算法】练习题: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
答案:
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;}
解析:
运行结果:
