Flowers
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1791 Accepted Submission(s): 1191
Total Submission(s): 1791 Accepted Submission(s): 1191
Problem Description
As you know, Gardon trid hard for his love-letter, and now he's spending too much time on choosing flowers for Angel.
When Gardon entered the flower shop, he was frightened and dazed by thousands kinds of flowers.
"How can I choose!" Gardon shouted out.
Finally, Gardon-- a no-EQ man decided to buy flowers as many as possible.
Can you compute how many flowers Gardon can buy at most?
When Gardon entered the flower shop, he was frightened and dazed by thousands kinds of flowers.
"How can I choose!" Gardon shouted out.
Finally, Gardon-- a no-EQ man decided to buy flowers as many as possible.
Can you compute how many flowers Gardon can buy at most?
Input
Input have serveral test cases. Each case has two lines.
The first line contains two integers: N and M. M means how much money Gardon have.
N integers following, means the prices of differnt flowers.
The first line contains two integers: N and M. M means how much money Gardon have.
N integers following, means the prices of differnt flowers.
Output
For each case, print how many flowers Gardon can buy at most.
You may firmly assume the number of each kind of flower is enough.
You may firmly assume the number of each kind of flower is enough.
Sample Input
2 5 2 3
Sample Output
2Gardon can buy 5=2+3,at most 2 flower, but he cannot buy 3 flower with 5 yuan.HintHint
————————————————————————————————
最简单的贪心
/****************************
*Name:Flowers.c
*Tags:ACM water
****************************/
#include <stdio.h>
int main()
{
int n, m, money[100], i, j, t;
int count, sum;
while(scanf("%d%d", &n, &m) != EOF) {
for(i = 0; i < n; i++) {
scanf("%d", money+i);
}
t = money[0];
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-1-i; j++) {
if(money[j] > money[j+1]) {
t = money[j];
money[j] = money[j+1];
money[j+1] = t;
}
}
}
sum = 0;
count = 0;
/*for(i = 0; i < n; i++) {
if(sum < m) {
count++;
sum += money[i];
}
else {
if(sum > m) {
count--;
}
break;
}
}*/
while(sum < m) {
count++;
sum += money[0];
}
if(sum > m) {
count--;
}
printf("%d\n", count);
}
return 0;
}
本文介绍了一个简单的贪心算法问题——如何用有限的资金购买尽可能多的花朵。通过排序和迭代计算,找到最大数量的花朵购买方案。
436

被折叠的 条评论
为什么被折叠?



