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