成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

裝箱問題的Java實現

開發 后端
以下講述精點問題在java中是如何實現的全過程。

問題:

 一個工廠制造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1*1, 2*2, 3*3, 4*4, 5*5, 6*6。這些產品通常使用一個 6*6*h 的長方體包裹包裝然后郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的包裹數量。他們很需要有一個好的程序幫他們解決這個問題從而節省費用。現在這個程序由你來設計。

Input

輸入文件包括幾行,每一行代表一個訂單。每個訂單里的一行包括六個整數,中間用空格隔開,分別為1*1至6*6這六種產品的數量。輸入文件將以6個0組成的一行結尾。

Output

除了輸入的***一行6個0以外,輸入文件里每一行對應著輸出文件的一行,每一行輸出一個整數代表對應的訂單所需的最小包裹數。

對于6*6的一個箱子來說,最多只能放一個6*6或一個5*5或4*4的盒子,所以我們初始化需要的箱子數時就是這這幾種箱子的個數和,對于3*3的箱子來說,我們可以放一個或2個或3個或4個,這我們可以通過整除和取模來確定放了3*3盒子的箱子數,再把它加入到總箱子數中,接下來我們就是把1*1和2*2的盒子塞進前面所需的箱子中,當塞不完時再來新增盒子,我們首先要將前面的箱子剩余的空間統計出來,并且要以2*2的優先考慮,因為我們可以把多余的2*2的位置變為填充4個1*1的,畢竟1*1的只要有空間隨處都可以塞。所以當我們的箱子要是裝了1個5*5的盒子的話,那么它就只能塞1*1的了,一個可以塞11個1*1的,對于裝了4*4的盒子的話,那么還可以裝5個2*2的盒子,暫且不要去轉話成1*1的,除非沒辦法只能裝1*1的,對于3*3的話就可以根據取模之后一個箱子剩下的空間了,如果一個箱子中只放了一個3*3的,那么還剩下3個3*3的空間可以放,我們知道可以放5個2*2的和7個1*1的,對于放了2個3*3的箱子,我們剩下的空間可以放3個2*2的以及6個1*1的,對于放了3個3*3的箱子,我們只能放1個2*2的和5個1*1的,這樣一來我們就統計出了此時可以放2*2以及1*1的空間到底有多少,接下來我們就放箱子進去啊,放一個就減一個,知道1*1的和2*2的盒子都放完了,要是還沒有放完的話我們就新增箱子或者如果1*1的沒放完,而2*2的還有剩,那么就將每個2*2的轉化成4個1*1的就行了,具體實現就看下面的代碼吧,由于時間關系,就沒寫注釋了。

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);

        }

    }

}

 

【編輯推薦】

  1. Sun推出面向***Java應用的Java軟件商店
  2. Java技巧:創建Excel格式的數據
  3. Java的MD5加密類
責任編輯:王觀 來源: Java學習室
相關推薦

2015-09-28 08:46:19

Java自動裝箱性能

2012-03-26 11:32:45

Java

2015-09-02 10:12:54

Java自動裝箱拆箱

2018-09-05 15:51:25

Java自動拆裝箱

2020-11-02 13:06:42

Java裝箱拆箱

2012-04-09 13:48:22

IDC數據中心云立方

2009-08-26 03:39:00

C#裝箱和拆箱

2017-10-23 10:13:18

IO底層虛擬

2017-08-10 09:51:54

DevOps集裝箱技術

2013-04-08 12:58:37

2012-08-20 19:38:59

云立方集裝箱數據中心

2012-08-07 09:24:00

模塊化數據中心

2010-09-07 11:00:42

2024-03-27 08:28:31

元素拖拽API文件上傳

2013-05-24 16:10:33

集裝箱數據中心華為

2012-07-17 15:37:00

集裝箱式數據中心

2009-08-28 11:22:11

C#裝箱和拆箱

2020-03-27 20:22:53

數據集裝箱網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产特级毛片 | 欧美综合国产精品久久丁香 | 欧美成人自拍视频 | av资源中文在线天堂 | 久久久久一区二区 | 天天干天天操 | 99re6在线视频 | 国产精品久久久久久久久大全 | 国产精品精品3d动漫 | 精品欧美乱码久久久久久1区2区 | 精品日韩 | 日韩精品视频一区二区三区 | 免费高清av | 久久亚洲欧美日韩精品专区 | 天天曰夜夜操 | 久久亚洲国产 | 天天干狠狠操 | 午夜视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 谁有毛片| 日韩高清一区 | 国产va | 人人插人人 | 一区二区三区不卡视频 | 蜜桃av鲁一鲁一鲁一鲁 | 色婷婷综合久久久中文字幕 | 国产一区二区视频免费在线观看 | 日韩在线视频免费观看 | 在线观看视频中文字幕 | 古装人性做爰av网站 | 男女网站在线观看 | 国产精品美女久久久 | 欧美黄视频 | 99热精品久久 | 女同久久另类99精品国产 | www国产成人免费观看视频,深夜成人网 | 91精品国产欧美一区二区成人 | 国产精品一区二区久久久久 | 久久亚洲天堂 | 国产欧美一区二区久久性色99 | 欧美视频网 |