久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 0-1背包問(wèn)題 [打印本頁(yè)]

作者: 51黑tt    時(shí)間: 2016-3-5 20:01
標(biāo)題: 0-1背包問(wèn)題
    發(fā)現(xiàn)很多重量級(jí)的公司都十分喜愛(ài)回溯法,可是鑒于回溯法稍微的復(fù)雜,就找了一個(gè)較為簡(jiǎn)單的動(dòng)態(tài)規(guī)劃的方法來(lái)解此題。
動(dòng)態(tài)規(guī)劃是用空間換時(shí)間的一種方法的抽象。其關(guān)鍵是發(fā)現(xiàn)子問(wèn)題和記錄其結(jié)果。然后利用這些結(jié)果減輕運(yùn)算量。
比如01背包問(wèn)題。
/* 一個(gè)旅行者有一個(gè)最多能用M公斤的背包,現(xiàn)在有N件物品,
它們的重量分別是W1,W2,...,Wn,
它們的價(jià)值分別為P1,P2,...,Pn.
若每種物品只有一件求旅行者能獲得最大總價(jià)值。
輸入格式:
M,N
W1,P1
W2,P2
......
輸出格式:
X
*/
因?yàn)楸嘲畲笕萘縈未知。所以,我們的程序要從1到M一個(gè)一個(gè)的試。比如,開始任選N件物品的一個(gè)。看對(duì)應(yīng)M的背包,能不能放進(jìn)去,如果能放進(jìn)去,并且還有多的空間,則,多出來(lái)的空間里能放N-1物品中的最大價(jià)值。怎么能保證總選擇是最大價(jià)值呢?看下表。
測(cè)試數(shù)據(jù):
10,3
3,4
4,5
5,6


c[j]數(shù)組保存了1,2,3號(hào)物品依次選擇后的最大價(jià)值.
這個(gè)最大價(jià)值是怎么得來(lái)的呢?從背包容量為0開始,1號(hào)物品先試,0,1,2,的容量都不能放.所以置0,背包容量為3則里面放4.這樣,這一排背包容量為4,5,6,....10的時(shí)候,最佳方案都是放4.假如1號(hào)物品放入背包.則再看2號(hào)物品.當(dāng)背包容量為3的時(shí)候,最佳方案還是上一排的最價(jià)方案c為4.而背包容量為5的時(shí)候,則最佳方案為自己的重量5.背包容量為7的時(shí)候,很顯然是5加上一個(gè)值了。加誰(shuí)??很顯然是7-4=3的時(shí)候.上一排 c3的最佳方案是4.所以。總的最佳方案是5+4為9.這樣.一排一排推下去。最右下放的數(shù)據(jù)就是最大的價(jià)值了。(注意第3排的背包容量為7的時(shí)候,最佳方案不是本身的6.而是上一排的9.說(shuō)明這時(shí)候3號(hào)物品沒(méi)有被選.選的是1,2號(hào)物品.所以得9.)
從以上最大價(jià)值的構(gòu)造過(guò)程中可以看出。 f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)}這就是書本上寫的動(dòng)態(tài)規(guī)劃方程.這回清楚了嗎?
下面是實(shí)際程序:

#include<stdio.h>
int c[10][100];/*對(duì)應(yīng)每種情況的最大價(jià)值*/
int knapsack(int m,int n)
{
int i,j,w[10],p[10];
for(i=1;i<n+1;i++)
        scanf("\n%d,%d",&w[i],&p[i]);
for(i=0;i<10;i++)
      for(j=0;j<100;j++)
           c[i][j]=0;/*初始化數(shù)組*/
for(i=1;i<n+1;i++)
      for(j=1;j<m+1;j++)
           {
            if(w[i]<=j) /*如果當(dāng)前物品的容量小于背包容量*/
                     {
                      if(p[i]+c[i-1][j-w[i]]>c[i-1][j])

                           /*如果本物品的價(jià)值加上背包剩下的空間能放的物品的價(jià)值*/

                         /*大于上一次選擇的最佳方案則更新c[i][j]*/
                            c[i][j]=p[i]+c[i-1][j-w[i]];
                            else
                            c[i][j]=c[i-1][j];
                     }
              else c[i][j]=c[i-1][j];
            }
return(c[n][m]);
                    
}
int main()
{
    int m,n;int i,j;
    scanf("%d,%d",&m,&n);
    printf("Input each one:\n");
    printf("%d",knapsack(m,n));
    printf("\n");/*下面是測(cè)試這個(gè)數(shù)組,可刪除*/
     for(i=0;i<10;i++)
      for(j=0;j<15;j++)
         {
          printf("%d ",c[i][j]);
             if(j==14)printf("\n");
         }
    system("pause");
}








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲欧美中文日韩在线v日本 | 一区二区三区国产好 | 成人av影院| 一区二区三区在线免费 | 亚洲网一区 | 国产成人网 | 精品中文在线 | 妖精视频一区二区三区 | 天天综合天天 | 久久成人av | 日韩在线观看一区 | 免费观看一级黄色录像 | 久热精品视频 | 国内精品久久久久久久影视简单 | 免费激情网站 | 久久久久久高潮国产精品视 | 一区二区三区日韩精品 | 亚洲精品久久久一区二区三区 | 欧美日韩高清 | 91亚洲精品国偷拍自产在线观看 | 亚洲视频二区 | 国产麻豆一区二区三区 | 伊人狠狠干 | 免费影视在线观看 | 国产精品成人一区 | 艹逼网| 欧美一区在线视频 | 亚洲综合无码一区二区 | 中文字幕日韩欧美 | 一区二区在线视频 | 日韩中文字幕视频在线 | 国产99小视频 | 欧美国产日韩在线 | 久久99精品国产自在现线小黄鸭 | 午夜影院视频 | 99亚洲精品 | caoporn地址 | 91成人精品| 日韩一区二区在线视频 | 日韩欧美国产一区二区 | 伊人久操 |