青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Pencil.C++

更新速度可能會晚于http://blog.csdn.net/bilaopao

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  34 隨筆 :: 0 文章 :: 40 評論 :: 0 Trackbacks

    算法試卷第五題,看了下,根據題意對答案進行了一下擴展,用C++把算法寫了下。哎,不早了,該睡覺了。

題目:

5、(0-1背包問題)現有五個物品,其中(w1,w2,w3,w4,w5=(3,4,7,8,9),(v1,v2,v3,v4,v5)=(4,5,10,11,13)W=17.(wi表示物品重量,vi表示物品價值,W表示背包所能承受的總重量)。求背包能獲得最大價值的裝法

 1#include <stdio.h>
 2#include <vector>
 3#include <iostream.h>
 4using namespace std;
 5int knapsack(vector<double> w, vector<double> v,int W)
 6{
 7    int i=w.size();
 8    double *arg=new double[i];    //物品的單位重量價值
 9    //算出各物品的單位重量價值
10    for(int j=0;j<i;j++){
11        arg[j]=v[j]/w[j];
12    }

13    int *rank=new int[i];
14    for(int k=0;k<i;k++){//賦初始值,順序與物品下標相同
15        rank[k]=k;
16    }

17
18    for(int m=0;m<i;m++){
19
20        for(int n=m;n<i;n++){
21            if(arg[m]<arg[n]){
22                double t;
23                //轉換值
24                t=arg[m];
25                arg[m]=arg[n];
26                arg[n]=t;
27                //轉換下標
28                int temp1=rank[m];
29                int temp2=rank[n];
30                rank[m]=temp2;
31                rank[n]=temp1;
32            }

33        }

34    }

35    int *x=new int[i];//存放各物品放在包里的數量x[1]則為第二件物品放在包里的數量
36    for(int z=0;z<i;z++){
37        if(W/w[rank[z]]==0)continue;//判斷是否能翻進去 為0則說明當前物品超重
38        x[rank[z]]=W/w[rank[z]];//計算可以存放的物品數量
39        W=W-(W/w[rank[z]])*w[rank[z]];
40    }

41    cout<<"[";
42    for(int y=0;y<i;y++){
43        cout <<"x"<<y+1;
44        if(y+1!=i)cout <<",";
45    }

46    cout <<"]=";
47    cout <<"[";
48    for(y=0;y<i;y++){
49        cout <<x[y];
50        if(y+1!=i)cout <<",";
51    }

52    cout <<"]";
53    delete rank;
54    delete x;
55    delete arg;
56return 0;
57}

58
posted on 2009-06-19 00:00 Pencil.C++ 閱讀(3829) 評論(6)  編輯 收藏 引用 所屬分類: 數據結構與算法

評論

# re: 背包問題的算法分析(C++描述) 2009-06-19 09:29 Nobody
這是背包問題,不是01背包吧?  回復  更多評論
  

# re: 背包問題的算法分析(C++描述) 2009-06-19 11:27 pierre200328
先將性價比排序,然后從最大取起:
36 for(int z=0;z<i;z++){
37 if(W/w[rank[z]]==0)continue;//判斷是否能翻進去 為0則說明當前物品超重
38 x[rank[z]]=W/w[rank[z]];//計算可以存放的物品數量
39 W=W-(W/w[rank[z]])*w[rank[z]];
40 }
沒有回退?3個物品,最優不一定選1,有可能選2/3
感覺怪怪的。。理論上來說是不對  回復  更多評論
  

# re: 背包問題的算法分析(C++描述) 2009-06-19 12:59 Pencil.C++
@pierre200328
這個不用回退,因為37行的的判斷目的就是判斷當前的物品是否還能往背包里面放了。如果==0,那說明一個都放不進去了。所以不回退。


還有就是最優的問題w[rank[z]] 。 rank[z]這個數組里面保存的是物品標記。而且rank[0]保存的標記就是最大單位質量價值的標記。 rank[1]則是排在第二的。所以在這之前rank已經是經過比對排序的了。這個是18行冒泡算法的目的。

謝謝你的回復。  回復  更多評論
  

# re: 背包問題的算法分析(C++描述) 2009-06-19 14:10 絕影
感覺這個算法有點問題  回復  更多評論
  

# re: 背包問題的算法分析(C++描述) 2009-06-19 18:08 Pencil.C++
@絕影
確實有點問題。

有一種情況我沒有考慮到。

  回復  更多評論
  

# re: 背包問題的算法分析(C++描述) 2009-07-01 15:58 88
算法存在缺陷,可能不是最優解  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产日韩欧美中文在线播放| 欧美国产先锋| 国产精品嫩草久久久久| 在线亚洲+欧美+日本专区| 亚洲激情网站| 欧美日本免费| 亚洲午夜精品久久| 亚洲宅男天堂在线观看无病毒| 国产精品女主播在线观看| 欧美一区网站| 久久久久久久一区二区三区| 亚洲国产精品激情在线观看| 亚洲精品欧洲| 国产精品视频你懂的| 久久黄色网页| 麻豆国产va免费精品高清在线| 99国产精品久久久久久久久久| 亚洲国产一区二区三区a毛片| 日韩网站在线观看| 亚洲图中文字幕| 黑人巨大精品欧美黑白配亚洲| 欧美 日韩 国产在线 | 亚洲一级电影| 欧美一级理论片| 亚洲精品久久视频| 亚洲一区二区三区高清不卡| 亚洲成人自拍视频| 亚洲素人在线| 亚洲日本一区二区三区| 亚洲女性裸体视频| 亚洲精品一区二区在线| 亚洲一区在线播放| 亚洲美女免费精品视频在线观看| 亚洲一区二区三区高清不卡| 亚洲黄色一区| 欧美在线视频播放| 亚洲美女区一区| 久久激情综合| 欧美亚洲午夜视频在线观看| 欧美国产在线电影| 久久婷婷av| 国产精品久久久久久久久久免费| 欧美激情在线播放| 伊人久久男人天堂| 亚洲欧美日韩精品在线| 一区二区三区视频在线观看| 久久五月天婷婷| 久久久久久久一区| 国产精品美女主播在线观看纯欲| 亚洲欧洲日产国码二区| 亚洲国产精品一区二区www在线 | 久久久综合激的五月天| 国产精品国产三级国产专播精品人 | 欧美国产日本| 欧美h视频在线| 国产一级揄自揄精品视频| 99综合电影在线视频| 亚洲精选91| 免费在线播放第一区高清av| 美日韩精品视频| 狠狠综合久久| 欧美在线观看视频一区二区| 午夜久久福利| 国产精品爽黄69| 亚洲天堂免费在线观看视频| 亚洲一品av免费观看| 欧美视频日韩| 亚洲一区二区三区四区五区午夜| 亚洲一级在线观看| 国产精品女主播在线观看| 亚洲一区三区电影在线观看| 亚洲在线观看视频网站| 国产精品欧美久久| 校园春色综合网| 美国成人直播| 亚洲精品一区二区网址| 欧美日韩国产大片| 亚洲一区二区三区视频播放| 欧美制服第一页| 一色屋精品视频免费看| 一区二区毛片| 精品动漫3d一区二区三区免费版 | 欧美高清免费| 亚洲精品麻豆| 国产精品大片免费观看| 午夜精品久久久久久久男人的天堂 | 欧美体内she精视频| 亚洲男人的天堂在线| 久久9热精品视频| 影音先锋久久| 欧美片在线观看| 亚洲视屏在线播放| 另类综合日韩欧美亚洲| 亚洲精品一区在线观看香蕉| 欧美午夜宅男影院| 久久九九免费视频| 亚洲剧情一区二区| 久久成人精品电影| 亚洲青色在线| 国产伦精品一区二区三区高清版| 久久精品系列| 日韩亚洲精品视频| 久久亚洲美女| 亚洲天堂av综合网| 影音先锋中文字幕一区二区| 欧美性天天影院| 老司机成人在线视频| 亚洲手机视频| 亚洲黑丝在线| 久久都是精品| 亚洲一区久久久| 亚洲国产精品悠悠久久琪琪| 国产精品在线看| 欧美伦理91| 美女视频一区免费观看| 亚洲男女自偷自拍| 亚洲精品一二| 欧美成人中文字幕在线| 欧美中文日韩| 亚洲欧美在线视频观看| 亚洲人体一区| 伊人久久亚洲热| 国产日韩在线播放| 国产精品国产三级国产普通话三级 | 欧美一区二区精品| 亚洲一区二区成人| 亚洲精品裸体| 亚洲国产婷婷香蕉久久久久久99 | 美女免费视频一区| 久久国产手机看片| 香蕉成人久久| 亚洲在线不卡| 亚洲影院免费观看| 一区二区三区国产在线| 亚洲精品日韩精品| 亚洲人成绝费网站色www| 欧美国产日韩一区二区在线观看| 久久久久久伊人| 久久久久欧美精品| 久久综合福利| 久久伊人亚洲| 蜜桃av噜噜一区二区三区| 久久久久成人精品免费播放动漫| 欧美一区高清| 欧美一区二区精美| 久久精品一区二区三区中文字幕| 欧美在线播放高清精品| 欧美日韩视频一区二区| 一本色道久久综合亚洲精品按摩| 亚洲在线观看免费| 亚洲综合欧美日韩| 亚洲一区二区三区777| 亚洲无限av看| 午夜精品久久久久久99热| 午夜精品久久久久久久男人的天堂| 亚洲在线1234| 久久久国产午夜精品| 久久五月天婷婷| 欧美激情一区二区在线| 亚洲美女91| 国产精品99久久久久久宅男| 亚洲欧美一区二区三区极速播放| 亚洲欧美一级二级三级| 久久久久久九九九九| 欧美好骚综合网| 国产精品激情偷乱一区二区∴| 国产精品欧美久久| 一区精品久久| 9色porny自拍视频一区二区| 亚洲午夜高清视频| 久久久精品一区二区三区| 欧美激情亚洲自拍| 亚洲一区精品在线| 久久久噜噜噜久久中文字免| 欧美激情中文字幕在线| 国产精品久久久久久久app| 国产欧美91| 日韩视频久久| 久久xxxx精品视频| 亚洲国产精品v| 亚洲免费婷婷| 欧美激情按摩在线| 国产一区二区久久精品| 亚洲片在线观看| 久久国产黑丝| 亚洲精品欧美专区| 久久亚洲精品视频| 国产精品三级视频| 亚洲第一福利视频| 欧美一区二区三区免费视频| 欧美粗暴jizz性欧美20| 亚洲一区二区三区激情| 欧美成人精品在线播放| 国产欧美欧美| 亚洲一区亚洲二区| 亚洲福利av| 欧美影院在线播放| 国产精品久久久久久久久免费桃花 | 欧美性一区二区| 日韩视频一区二区三区|