@[elong123](/user/892700) 因为要叠的高度超过$S$才行,而您的解法会比$S$低,所以要加一才能超过$S$
Ps:另外由此可见您代码不是很严谨,严谨一点可以考虑加个特判判断一下是否加一
by Coffins @ 2023-03-09 21:09:57
@[Coffins](/user/615965) 大佬能否指点一下,让我见见你的代码,因为我也是刚开始学习排序,还有很多地方不懂
by elong123 @ 2023-03-10 20:30:17
@[elong123](/user/892700) 其实您的排序没毛病,就是统计方式与想象有出入(当然也是对的
举个栗子:
当h分别为1 20 50 60 100,
s为170时,您的代码在统计进100和60时sum会加加,当cnt加上50时就超了,因此sum=2,但实际上只用100和60是不够的,还要用50却没统计上,所以最后结果要加一
另外就是循环结束后特判若cnt==b则不加1,因为正好卡上了,够高了
by Coffins @ 2023-03-10 22:25:43
您这么改不用加1:
for(int i=0;cnt<=b;i++)
{
cnt+=a[i];
sum++;
}
by liujiayao @ 2023-03-13 11:04:32
```cpp
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main(){
int n,b; //
int h[20000];//奶牛的身高
cin>>n>>b;
int s=0;
for(int i=0;i<n;i++){
cin>>h[i];
}
sort(h,h+n,greater<int>());//倒序排序
int j=0;
for(j=0;j<n;j++){
s=s+h[j];
if(s>=b){
break;
}
}
cout<<j+1;
return 0;
}
```
by zhangboyuan0 @ 2023-03-25 09:37:20