题解 | #装箱问题#

装箱问题

http://www.nowcoder.com/practice/d195a735f05b46cf8f210c4ad250681c

import java.util.*;


public class Solution {
    
    public class ComparaInteger implements Comparator<Integer> {
        @Override
        public int compare(Integer num1, Integer num2) {
            return num1 - num2;
        }
    }
    
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param V int整型 
     * @param num int整型ArrayList 
     * @return int整型
     */
    public int boxin(int V, ArrayList<Integer> num) {
        // write code here
        int n = num.size();
        num.sort(new ComparaInteger());
        int[][] remainSpaces = new int[n + 1][V + 1];
        for (int currentSpace = 0; currentSpace <= V; currentSpace++) {
            remainSpaces[0][currentSpace] = currentSpace;
        }
        for (int currentGoods = 1; currentGoods <= n; currentGoods++) {
            int currentGoodsSpace = num.get(currentGoods - 1);
            for (int currentSpace = 1; currentSpace <= V; currentSpace++) {
                remainSpaces[currentGoods][currentSpace] = remainSpaces[currentGoods - 1][currentSpace];
                if (currentGoodsSpace <= currentSpace) {
                    remainSpaces[currentGoods][currentSpace] = Math.min(remainSpaces[currentGoods][currentSpace], remainSpaces[currentGoods - 1][currentSpace - currentGoodsSpace]);
                }
            }
        }
        return remainSpaces[n][V];
    }
}
全部评论

相关推荐

沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务