• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            我要啦免费统计
            背包問題(01,完全,多重,未測試)
             
            #define MAXN 120005  //maxcash
            #define  MAX 11

            int n[MAX],c[MAX];//n[i]物品i的數量,c[i]費用,w[i]價值 
            int f[MAXN];//MAXN為最大容量 ,存儲狀態值 
            int V,N;//V最大容量,N物品個數 

            /*01背包物品 */ 
             
            void ZeroOnePack(int cost,int weight){
                  
            //一件01背包物品 
                  
            // 費用cost, 價值weight,01背包 
                 for(int v=V;v>=cost;--v)
                  f[v]
            =max(f[v],f[v-cost]+weight);
                 
            return;
             }

             
             
            void ZeroOnePackMain(){
               
            /*N件物品 容量為V的背包,第i件物品費用c[i],價值w[i],求轉入背包可以獲取的最大價值 
               原方程f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 
               簡化方程:f[v]=max{f[v],f[v-cost]+weight};
               
            */

               
            for(int i=0;i<N;i++)
                  ZeroOnePack(cost[i],weight[i]);
               
            return;
              }



              
            /*一件完全背包*/ 
             
            void CompletePack(int cost,int weight){
                  
            //一件物品完全背包 
                  
            //N 種物品 容量 V,c[i],w[i], 每一種無限,求最大價值  
                
            // 費用cost, 價值weight,完全背包 
                
            //對多種物品的問題,可以添加的優化:a.去掉大于V的物品;b.c[i]<=c[j] and w[i]>=w[j]去掉物品j   
                for(int v=cost;v<=V;++v)
                   f[v]
            =max(f[v],f[v-cost]+weight);
                
            return;
             }



            /*一件多重背包*/
             
            void MultiplePack(int cost,int weight,int amount){
             
            //多重背包 
             
            //1種物品 費用cost, 價值weight,個數amount 
             
            //二進制優化log(amount) 
                 if(c*amount>=V){
                    CompletePack(cost,weight);
                   
            return;      
                 }

                 
            int k=1;
                 
            while(k<amount){
                    ZeroOnePack(k
            *cost);
                    amount
            -=k;
                    k
            *=2;
                 }

                 ZeroOnePack(amount
            *cost);
                 
            return;
             }

            posted on 2009-03-18 23:35 閱讀(1861) 評論(2)  編輯 收藏 引用 所屬分類: Dynamic programming

            評論:
            # re: 先寫個背包問題模板(01,完全,多重,未測試) 2009-03-19 09:30 | cppexplore
            偶爾往首頁發個解題報告也無不可 大量的發而又重復的沒啥意義吧
            是不是可以寫的總結啊 算法基礎 npc綜述之類的發到首頁啊  回復  更多評論
              
            # re: 先寫個背包問題模板(01,完全,多重,未測試) 2009-03-19 18:02 | cdy20
            @cppexplore
            有些代碼只算是保存而已。

            我菜鳥而已。
            也沒多少時間寫這些,寫在筆記本上多點。

            等退役后再說吧。
              回復  更多評論
              
            久久av高潮av无码av喷吹| 女同久久| 9999国产精品欧美久久久久久| 狠狠色伊人久久精品综合网| 狠狠人妻久久久久久综合蜜桃| 久久美女人爽女人爽| 国内精品久久久久久久影视麻豆| 久久久久久国产精品免费免费| 理论片午午伦夜理片久久| 久久久久99精品成人片三人毛片 | 亚洲AV日韩AV天堂久久| 色偷偷88888欧美精品久久久| 无码伊人66久久大杳蕉网站谷歌| 久久精品中文无码资源站| 亚洲国产精品久久久天堂| 日韩亚洲欧美久久久www综合网 | 狠狠色丁香久久婷婷综合_中| 亚洲色欲久久久综合网东京热| 精品久久久久久久无码| 伊人色综合久久| 久久香综合精品久久伊人| 国产精品美女久久久| 中文字幕乱码人妻无码久久| 久久久久久亚洲精品无码| 国产成人精品白浆久久69| AV无码久久久久不卡蜜桃| 91久久精品电影| 精品一区二区久久| 久久久久久人妻无码| 亚洲欧美国产日韩综合久久| 狠狠色丁香婷婷综合久久来来去 | 少妇精品久久久一区二区三区| 久久久久中文字幕| 久久99精品久久久久久动态图| 伊人热热久久原色播放www| 91久久精品国产免费直播| 久久久久亚洲AV无码永不| 亚洲AV无码成人网站久久精品大| 亚洲国产成人精品女人久久久 | 亚洲国产成人久久综合碰碰动漫3d | 久久婷婷久久一区二区三区|