本文主要是介绍蜡烛 (C++) 简单贪心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
奶牛bessie有n根蜡烛,第i根蜡烛的长度是h[i]. bessie最近刚上完小学,只会加减法。它想知道它的n根蜡烛最多能用多少个晚上。由于bessie比较胆小,因此它第一个晚上只点燃一根蜡烛,第二个晚上点燃两根蜡烛,第三个晚上点燃三根蜡烛…第i个晚上它必须要点燃i根蜡烛。每根被点燃的蜡烛,它燃烧一个晚上会使得它的长度减少1。一旦蜡烛的长度变成0,那么该根蜡烛就用完了。如果第i个晚上bessie发现不够i根蜡烛用了,那么bessie最多就只能用i-1个晚上.
Bessie想知道,它该如何选择每个晚上点燃哪些蜡烛,使得它的n根蜡烛能用尽量多的晚上。输出最多能用多少个晚上。
输入格式
第一行:一个整数n, 1 <= n <= 50.
第二行:n个整数,第i个整数表示第i根蜡烛的长度h[i]. 1 <= h[i] <= 100.
输出格式
一个整数,总共最多能用多少个晚上.
输入/输出例子1
输入:
3
2 2 2
输出:
3
样例解释
无
分析:
这题有一个非常重要的信息点,就是应从最长的蜡烛烧起,可以用sort排序来实现,不过应在每次循环(模拟烧蜡烛)后循环。< (^ __ ^) >
代码:
#include <bits/stdc++.h>
using namespace std;
int n,h[60],ans,g;
bool cmp(int a,int b)
{return a>b;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>h[i];}sort(h+1,h+1+n,cmp);for(int i=1;i<=n;i++){g=0;ans++;for(int j=1;j<=i;j++){if(h[j]==0){ cout<<ans-1;return 0;}h[j]--;}sort(h+1,h+1+n,cmp);}cout<<ans;return 0;
}
哼,就知道抄代码,也不知道点赞加关注!
这篇关于蜡烛 (C++) 简单贪心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!