贪心算法基本模型,将价格从大到小排序,判断最大的价格能不能与最小的价格放在一起,如果可以,将最小的价格取出,即n--
,反之,什么都不做,所以最后答案就是这个循环的循环次数。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int i,sum,n,count=0;
cin>>sum>>n;
int a[n];
for (i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
for (i=0;i<n;)
{
if (a[i]+a[n-1]<=sum)
{
i++;
n--;
count++;
}
else
{
i++;
count++;
}
}
cout<<count;
}