poj3627~贪心~排序~小水题

来源:互联网 发布:中国云计算行业分析 编辑:程序博客网 时间:2024/06/07 05:59

问题:已知有n个人及每个人的身高,问为了达到高度b,最少需要几个人叠罗汉。保证n个人的总身高超过b。

思路:先取身高最高的,如果不足b,再取剩下中最高的。先排序,再贪心。


#include<iostream>#include<string>#include<algorithm>using namespace std;int h[20005];int cmp(int &a,int &b) //  a<b是递增,a>b是递减{    if(a>b)       return 1;    else return 0;}; int main(){int n,b,i,j,k,sum;cin>>n>>b;for(i=0;i<n;i++)scanf("%d",&h[i]);sort(h,h+n,cmp);   //按递减排序k=sum=0;while(sum<b)sum+=h[k++];   //挑最大的相加cout<<k<<endl;return 0;}



0 0
原创粉丝点击