【世界快播報(bào)】#yyds干貨盤(pán)點(diǎn)# 名企真題專(zhuān)題:最少數(shù)量貨物裝箱問(wèn)題

2022-12-29 19:28:06 來(lái)源:51CTO博客

1.簡(jiǎn)述:

描述

有重量分別為 3,5,7 公斤的三種貨物,和一個(gè)載重量為 X 公斤的箱子(不考慮體積等其它因素,只計(jì)算重量)

需要向箱子內(nèi)裝滿X公斤的貨物,要求使用的貨物個(gè)數(shù)盡可能少(三種貨物數(shù)量無(wú)限)


(相關(guān)資料圖)

數(shù)據(jù)范圍:

輸入描述:

輸入箱子載重量(一個(gè)整數(shù))。

輸出描述:

如果無(wú)法裝滿,輸出 -1。如果可以裝滿,輸出使用貨物的總個(gè)數(shù)。

示例1

輸入:

4

輸出:

-1

說(shuō)明:

無(wú)法裝滿
示例2

輸入:

8

輸出:

2

說(shuō)明:

使用1個(gè)5公斤,1個(gè)3公斤貨物

2.代碼實(shí)現(xiàn):

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc=new Scanner(System.in);        int n=sc.nextInt();        int[][] dp=new int[n+1][4];        int[] nums=new int[]{3,5,7};        for(int i=0;i<=n;i++)            dp[i][0]=Integer.MAX_VALUE;        //dp[n][3]=;        for(int i=1;i<=n;i++){            for(int j=1;j<=3;j++){                if(i-nums[j-1]<0)                    dp[i][j]=dp[i][j-1];                else{                    if(dp[i-nums[j-1]][j]==Integer.MAX_VALUE)                        dp[i-nums[j-1]][j]=Integer.MAX_VALUE-1;                    dp[i][j]=Math.min(dp[i][j-1],dp[i-nums[j-1]][j]+1);                }                                }                    }        System.out.println(dp[n][3]==Integer.MAX_VALUE?-1:dp[n][3]);    }}

標(biāo)簽: 貨物數(shù)量 計(jì)算重量 如果可以

上一篇:環(huán)球信息:elastic-job2.1.5版本全量查詢JOB_STATUS_TRACE_LOG的問(wèn)題
下一篇:今日熱文:#yyds干貨盤(pán)點(diǎn)# 名企真題專(zhuān)題:游戲任務(wù)標(biāo)記