2043 蛋糕
来源:互联网 发布:公司网络建设方案 编辑:程序博客网 时间:2024/04/27 17:54
- 描述
大运村楼下的味多美的蛋糕很好吃~~
(以下内容纯属虚构)
店里的每一个蛋糕都用底部相同,高度可能不同的长方体纸盒包装着,顾客买完单后,味多美会为顾客将这些蛋糕用同样底部大小的长方体袋子装起来(袋子比所有单个蛋糕纸盒都要高)。一个袋子里可以叠放多个蛋糕纸盒,但是总高度不能超出袋子。
为了节约成本,店主希望你计算一下,对每笔交易,最少需要多少个袋子才能满足要求。明显,这个问题对于刚刚学习算法不久的你来说,或许会有一定的难度,所以在此题中,你只需假定,你总是先装入较低高度的蛋糕。
在上完机后,请思考除去这个假设后应该如何计算。不排除下次或者期末上机出类似的题目。- 输入
多组测试数据。每组测试数据占三行,
第一行一个正整数H,表示袋子的高度(1<=H<=100)
第二行一个正整数n,表示顾客买了n个蛋糕(1<n<=50)
第三行有n个正整数,h1,....,hn,表示着包装这n个蛋糕的盒子的高度。(1<=hi<=H)- 输出
对每组测试数据输出最少需要的袋子数目,每组数据占一行
- 样例输入
10
1
10
10
2
8 3
10
5
8 2 10 7 3
样例输出
1
24
简单的模拟题,题目已经进行了简化,这题是贪心算法,如果取消掉每次装入最小的,应该用到的是动态规划
#include <stdio.h>int main(){int height;int n;int h[52];int i;int j;int temp;int sum;int upset;while (scanf("%d",&height)!=EOF){sum=1;upset=height;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&h[i]);}for(i=0;i<n;i++)for(j=i+1;j<n;j++){if(h[i]>h[j]){temp=h[i];h[i]=h[j];h[j]=temp;}}for(i=0;i<n;i++){height-=h[i];if(height<0){i--;height=upset;sum++;}}printf("%d\n",sum);}return 0;}
- 2043 蛋糕
- 蛋糕
- 蛋糕
- 蛋糕
- 切蛋糕
- 酸奶蛋糕
- 分蛋糕
- 切蛋糕
- 分蛋糕
- 三角蛋糕
- 三角蛋糕
- 平分蛋糕
- 分蛋糕
- 分蛋糕
- 分蛋糕
- 5069. 蛋糕
- 孝感蛋糕
- 分蛋糕
- myeclipse 保存 出错 Save could not be completed
- spring 3.1 mvc 例子浅谈[返回json数据](3)
- 'function': was declared deprecated
- 查看一个表是否有相同记录的sql
- ASP.NET Ajax Web Service
- 2043 蛋糕
- MP3关于计算duration
- 关系型 Active Record
- Kernel 3.0.8 内存管理函数
- Jboss 后台运行模式
- 比较2个数组元素元素是否相同
- HTTP协议详解
- matlab hgsave and hgload 存取句柄图形
- WEXT/mac80211/nl80211/cfg80211