Time Limit: 1000 MS Memory Limit: 32768 KB
Total Submission(s): 1443 Accepted Submission(s): 536
Description
陶陶想把苹果装到袋子里,找来找去就找到了一个小袋子,苹果太多,袋子根本装不下,并且袋子最多可以装的质量为M,陶陶想使装的苹果个数尽量多。请你来帮他。
Input
第一行袋子的最大承受重量M(0<M<100)
第二行苹果的个数N(0<N<2000)
紧跟N行,每行一个整数,每个苹果的质量a(0<a<100)
Output
只有一行,陶陶最多能装苹果的个数
Sample Input
10 5 5 2 6 8 1
Sample Output
3
Source
核心:贪心
d *p=&k[1];
sort(p,p+n);
i=1;
sum=0;
while(i<=n)
{
sum+=k[i];
if(sum>m)
{
printf("%d\n",i-1);
return 0;
}
if(sum==m)
{
printf("%d\n",i);
return 0;
}
i++;
}
附上AC代码:
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <utility>
#include <iostream>
#include <algorithm>
using namespace std;
#define d double
int n,i;
d a,m,sum,*p;
d k[2005];
int main()
{
cin>>m>>n;
for(int j=1;j<=n;j++)
{
cin>>k[j];
}
d *p=&k[1];
sort(p,p+n);
i=1;
sum=0;
while(i<=n)
{
sum+=k[i];
if(sum>m)
{
printf("%d\n",i-1);
return 0;
}
if(sum==m)
{
printf("%d\n",i);
return 0;
}
i++;
}
return 0;
}
/*Sample Input
10
5
5
2
6
8
1
Sample Output
3
10
5
5
2
6
8
3
Sample Output
3
*/