包装花束问题 求指教思路有什么问题
题目
包装花束
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB题目描述:
今天Tom准备转行开花店,所以他进了一大堆花回来打算包装成花束。每个花束要求有m种不一样的花,每种花需要放 r 朵。那么问题来了,Tom只进了n种花,每种花分别有 zi 朵。他最多能包装出多少个花束
输入
第一行输入n(范围为[0, 100000])、m(范围为[0, 100000])、r(范围为[0, 100000].
第二行输入n个整数,zi代表第i种花有 zi 朵
输出
Tom最多能包装出多少个花束
样例输入
3 2 3
7 7 9
样例输出
3
Hint
思路:
1用数量最多的花的种类计算出可能最多有多少花束 NUM
2对花束的根据数量进行排序
2进行NUM次循环
对花束数组循环
进行m次循环
花数量>=r
扣掉r
循环结束没有达到m次
返回当前统计的数量
达到m次
总数+=1
此处放上代码: 通过率0.3求指点啥问题
function flower(m,r,arr){ var m = Number(m); var r =Number(r); for(var i =0;i<arr.length;i++){ arr[i] = Number(arr[i]); } arr.sort(function(a,b){ return a-b; }); var max = Math.max(arr[arr.length-1]); //肯定有数量最多的那个花束 m -= 1; var total = 0; var maxHuashu = Math.floor(max/r); while(maxHuashu) { var left = m; for (var j = 0; j < (arr.length - 1); j++) { if (left > 0) { //大于r才能作为花束 if (arr[j] >= r) { left -= 1; arr[j] -= r; } } else { break; } } if(left>0){ break }else if(left == 0){ total += 1; } maxHuashu--; } return total; }