包装花束问题 求指教思路有什么问题

题目

包装花束

时间限制: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;
    }
全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务