av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

裝箱問(wèn)題的Java實(shí)現(xiàn)

問(wèn)題:

古塔ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

 一個(gè)工廠制造的產(chǎn)品形狀都是長(zhǎng)方體,它們的高度都是h,長(zhǎng)和寬都相等,一共有六個(gè)型號(hào),他們的長(zhǎng)寬分別為1*1, 2*2, 3*3, 4*4, 5*5, 6*6。這些產(chǎn)品通常使用一個(gè) 6*6*h 的長(zhǎng)方體包裹包裝然后郵寄給客戶。因?yàn)猷]費(fèi)很貴,所以工廠要想方設(shè)法的減小每個(gè)訂單運(yùn)送時(shí)的包裹數(shù)量。他們很需要有一個(gè)好的程序幫他們解決這個(gè)問(wèn)題從而節(jié)省費(fèi)用。現(xiàn)在這個(gè)程序由你來(lái)設(shè)計(jì)。

Input

輸入文件包括幾行,每一行代表一個(gè)訂單。每個(gè)訂單里的一行包括六個(gè)整數(shù),中間用空格隔開(kāi),分別為1*1至6*6這六種產(chǎn)品的數(shù)量。輸入文件將以6個(gè)0組成的一行結(jié)尾。

Output

除了輸入的***一行6個(gè)0以外,輸入文件里每一行對(duì)應(yīng)著輸出文件的一行,每一行輸出一個(gè)整數(shù)代表對(duì)應(yīng)的訂單所需的最小包裹數(shù)。

對(duì)于6*6的一個(gè)箱子來(lái)說(shuō),最多只能放一個(gè)6*6或一個(gè)5*5或4*4的盒子,所以我們初始化需要的箱子數(shù)時(shí)就是這這幾種箱子的個(gè)數(shù)和,對(duì)于3*3的箱子來(lái)說(shuō),我們可以放一個(gè)或2個(gè)或3個(gè)或4個(gè),這我們可以通過(guò)整除和取模來(lái)確定放了3*3盒子的箱子數(shù),再把它加入到總箱子數(shù)中,接下來(lái)我們就是把1*1和2*2的盒子塞進(jìn)前面所需的箱子中,當(dāng)塞不完時(shí)再來(lái)新增盒子,我們首先要將前面的箱子剩余的空間統(tǒng)計(jì)出來(lái),并且要以2*2的優(yōu)先考慮,因?yàn)槲覀兛梢园讯嘤嗟?*2的位置變?yōu)樘畛?個(gè)1*1的,畢竟1*1的只要有空間隨處都可以塞。所以當(dāng)我們的箱子要是裝了1個(gè)5*5的盒子的話,那么它就只能塞1*1的了,一個(gè)可以塞11個(gè)1*1的,對(duì)于裝了4*4的盒子的話,那么還可以裝5個(gè)2*2的盒子,暫且不要去轉(zhuǎn)話成1*1的,除非沒(méi)辦法只能裝1*1的,對(duì)于3*3的話就可以根據(jù)取模之后一個(gè)箱子剩下的空間了,如果一個(gè)箱子中只放了一個(gè)3*3的,那么還剩下3個(gè)3*3的空間可以放,我們知道可以放5個(gè)2*2的和7個(gè)1*1的,對(duì)于放了2個(gè)3*3的箱子,我們剩下的空間可以放3個(gè)2*2的以及6個(gè)1*1的,對(duì)于放了3個(gè)3*3的箱子,我們只能放1個(gè)2*2的和5個(gè)1*1的,這樣一來(lái)我們就統(tǒng)計(jì)出了此時(shí)可以放2*2以及1*1的空間到底有多少,接下來(lái)我們就放箱子進(jìn)去啊,放一個(gè)就減一個(gè),知道1*1的和2*2的盒子都放完了,要是還沒(méi)有放完的話我們就新增箱子或者如果1*1的沒(méi)放完,而2*2的還有剩,那么就將每個(gè)2*2的轉(zhuǎn)化成4個(gè)1*1的就行了,具體實(shí)現(xiàn)就看下面的代碼吧,由于時(shí)間關(guān)系,就沒(méi)寫(xiě)注釋了。

import java.io.BufferedInputStream;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

public class Test {

    public static void main(String args[]){

        Scanner sc=new Scanner(new BufferedInputStream(System.in));

        boolean flag=true;

        Map map=new HashMap();

        int k=0;

        while(flag){

            int n[]=new int[6];

            n[0]=sc.nextInt();

            n[1]=sc.nextInt();

            n[2]=sc.nextInt();

            n[3]=sc.nextInt();

            n[4]=sc.nextInt();

            n[5]=sc.nextInt();

            if(n[0]==0&&n[1]==0&&n[2]==0&&n[3]==0&&n[4]==0&&n[5]==0){

                flag=false;

            }else{

                map.put(k, n);

                k++;

            }

        }

        for(int i=0;i< map.size();i++){

            int[] vs=(int[])map.get(i);

            int boxNum=0;

            boxNum+=vs[3]+vs[4]+vs[5];

            if(vs[2]>0){

                if(vs[2]%4==0){

                    boxNum+=vs[2]/4;

                }else{

                    boxNum+=vs[2]/4+1;

                }

            }

            int for1=vs[4]*11;

            int for2=vs[3]*5;

            if(vs[2]%4==1){

                for1+=7;

                for2+=5;

            }else if(vs[2]%4==2){

                for1+=6;

                for2+=3;

            }else if(vs[2]%4==3){

                for1+=5;

                for2+=1;

            }

            if(vs[0]< for1){

                vs[0]=0;

            }else{

                vs[0]=vs[0]-for1;

            }

            if(vs[1]< for2){

                if(vs[0]>0){

                    if(4*(for2-vs[1])-vs[0]>=0){

                        vs[0]=0;

                    }else{

                        vs[0]=vs[0]-4*(for2-vs[1]);

                    }

                }

                vs[1]=0;

            }else{

                vs[1]=vs[1]-for2;

            }

            if(!(vs[0]==0&&vs[1]==0)){

                if(vs[1]>0){

                    if(vs[1]%9==0){

                        boxNum+=vs[1]/9;

                    }else{

                        boxNum+=vs[1]/9+1;

                        if(vs[0]>(9-(vs[1]%9))*4){

                            if((vs[0]-(9-(vs[1]%9))*4)%36==0){

                                boxNum+=(vs[0]-(9-(vs[1]%9))*4)/36;

                            }else{

                                boxNum+=(vs[0]-(9-(vs[1]%9))*4)/36+1;

                            }

                        }

                    }

                }else if(vs[0]>0){

                    if(vs[0]%36==0){

                        boxNum+=vs[0]/36;

                    }else{

                        boxNum+=vs[0]/36+1;

                    }

                }

            }

            System.out.println(boxNum);

        }

    }

}


標(biāo)題名稱:裝箱問(wèn)題的Java實(shí)現(xiàn)
本文來(lái)源:http://uogjgqi.cn/article/cdeddgj.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流