zoukankan      html  css  js  c++  java
  • 钢条切割

    问题描述

    Serling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。
    假定我们知道Serling公司出售一段长为i英寸的钢条的价格为pi(i=1,2,…,单位为美元)。钢条的长度均为整英寸。

    | 长度i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    | - | - | - | - | - | - | - | - | - | - |
    价格pi | 1 | 5 | 8 | 16 | 10 | 17 | 17 | 20 | 24 | 30 |

    钢条切割问题是这样的:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,…n),求切割钢条方案,使得销售收益rn最大。
    注意,如果长度为n英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割

    题解

    import java.util.Scanner;
    
    public class Main {
        public static int []maxMoney;
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n= sc.nextInt();
            int []money = new int[n+1];
            for (int i = 1; i <=n; i++) {
                money[i] = sc.nextInt();
            }
            slove(money,n);
            sc.close();
    
        }
        private static void slove(int[] money,int length){
                maxMoney = new int[length+1];
                for(int i=1;i<=length;i++){
                    for (int j = 1; j <=i ; j++) {
                        maxMoney[i] = Math.max(money[j]+maxMoney[i-j],maxMoney[i]);//常见dp解法
                    }
                }
            System.out.println(maxMoney[length]);
        }
    
    }
    
    

    剪绳子同款套路
    https://leetcode-cn.com/problems/jian-sheng-zi-lcof/

    class Solution {
        public int cuttingRope(int n) {
            int[] dp = new int[n+1];
            if(n <= 1) return 1;
            if(n <= 3) return n-1;
            //对于大于4的绳子,到3之后就没必要分割
            dp[1] = 1;
            dp[2] = 2;
            dp[3] = 3;
            for(int i=4;i<=n;i++){
                for(int j=1;j<=i;j++){
                    dp[i] = Math.max(dp[i],dp[i-j]*dp[j]);
                }
            }
            return dp[n];
        }
    }
    
    
  • 相关阅读:
    给窗体加个圣诞帽——抛砖引玉
    《高手寂寞》随感
    离职日记-计划与变化
    什么样的生活
    这一年……
    写在2011第一天的工作前
    Visual C++ 学习笔记四 —— 模板
    bugfree安装与配置
    QTP环境变量的使用
    测试提问单[转]
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13401264.html
Copyright © 2011-2022 走看看