贪心-摘苹果(C语言)
本文最后更新于191 天前,其中的信息可能已经过时,如有错误请发送邮件到1729915388@qq.com

【问题描述】

小明想摘树上的苹果,但他不够高,够不到高处的果子,只能搬来木桩垫在脚下。小明共找来N个木桩(1 ≤ N ≤ 2000),每个木桩的高度为Hi(1 ≤ Hi ≤ 10000),N个木桩的总高度为S。最高处的果子的高度为B(1 ≤ B ≤ S < 2000000007)。为了能摘到最高处的苹果,可以将木桩像叠罗汉一样垒起来,直到他们的总高度不低于最高处苹果的高度。当然若木桩垒的越多则危险性越大。为了帮助小明到摘到最高苹果处,找出使用木桩数目最少的解决方案吧。

【输入说明】

第1行:空格隔开的整数N和B

第2~N+1行:第i+1行为整数Hi

【输出说明】

到达最高苹果处使用木桩数目最少数目

【输入样例】

6 40

6

18

11

13

19

11

【输出样例】

3

#include<stdio.h>
#define N 100
void Insertion_Sort(int *a,int n){
	int i = 0;
	for(i = 0; i < n-1; i++)
	{
		int M = i;
		int num = a[i + 1];
		while(M >= 0)
		{
			if(num > a[M])
			{
				a[M + 1] = a[M];
				M--;
			}
			else
			{
				break;
			}
		}
		a[M + 1] = num;
	}
}
int main()
{
    int Hi[N];
	int n,B;//n:木桩数目,B高度
	int sum = B;
	int tmp = 0;
	scanf("%d %d",&n,&B);
	for(int i=0; i < n; i++)
		scanf("%d",&Hi[i]);
	Insertion_Sort(Hi,n);
	for(int i = 0; i < n; ++i)
	{
		tmp += Hi[i];
		if(tmp >= B)
		{
            sum=i+1;
			break;
		}
	}
	printf("%d",sum);
	return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇