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

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>
            久久久久久久999| 久久久国产精品一区二区三区| 欧美日韩在线播放三区四区| 免费不卡欧美自拍视频| 久久免费视频在线| 亚洲精品久久视频| 9国产精品视频| 国产一级久久| 在线观看一区| aⅴ色国产欧美| 亚洲欧美日韩久久精品| 久久精品男女| 亚洲国内自拍| 日韩亚洲欧美成人| 先锋影音国产精品| 久久综合久久久| 国产精品成人一区二区| 尤物99国产成人精品视频| 一区二区三区欧美在线观看| 久久精品一区二区三区四区 | 在线播放亚洲| 一区二区三区毛片| 久久久久久免费| 91久久精品美女| 亚洲自拍偷拍一区| 男女精品网站| 国产婷婷成人久久av免费高清| 亚洲韩国一区二区三区| 午夜伦欧美伦电影理论片| 欧美激情国产精品| 午夜精品久久久99热福利| 欧美精品久久久久a| 韩国福利一区| 欧美一级播放| 99精品国产一区二区青青牛奶| 久久久国产一区二区三区| 国产精品入口尤物| 一区二区电影免费观看| 欧美 日韩 国产 一区| 亚洲在线观看视频网站| 欧美日韩 国产精品| 亚洲高清三级视频| 久久久久久国产精品mv| 亚洲视频免费看| 欧美成人中文| 亚洲福利视频一区二区| 久久久久久久欧美精品| 亚洲欧美激情视频在线观看一区二区三区| 欧美二区在线播放| 91久久在线视频| 欧美a级片网| 久久精品国产99国产精品澳门| 国产乱码精品一区二区三区五月婷 | 一区二区三区精品| 你懂的亚洲视频| 久久免费国产精品| 好看的av在线不卡观看| 久久精品国产综合| 性欧美暴力猛交另类hd| 狠狠久久亚洲欧美| 亚洲国产高清一区二区三区| 久久人人超碰| 永久免费精品影视网站| 欧美黄色视屏| 欧美激情精品久久久久久免费印度 | 亚洲欧洲一区二区三区| 欧美激情精品久久久久久久变态| 久久躁日日躁aaaaxxxx| 亚洲国产成人久久综合| 亚洲电影专区| 欧美日韩999| 亚洲欧美激情一区| 性做久久久久久| 亚洲成色最大综合在线| 亚洲激情成人网| 欧美性做爰猛烈叫床潮| 久久国产精品99久久久久久老狼| 亚洲免费视频一区二区| 国产午夜久久| 女同性一区二区三区人了人一| 免费亚洲婷婷| 亚洲综合欧美| 久久精品一区蜜桃臀影院 | 国产亚洲欧美一区在线观看| 另类天堂av| 欧美大学生性色视频| 中文在线资源观看视频网站免费不卡| 在线一区二区三区四区五区| 国产欧美亚洲精品| 欧美夫妇交换俱乐部在线观看| 欧美伦理91i| 欧美怡红院视频| 牛牛国产精品| 欧美在线观看天堂一区二区三区| 久久综合综合久久综合| 亚洲线精品一区二区三区八戒| 欧美在线看片| 国产色视频一区| 亚洲国产高潮在线观看| 国产精品爽黄69| 亚洲国产三级网| 久久国产精品一区二区三区四区| 99精品久久| 欧美一级在线亚洲天堂| 99av国产精品欲麻豆| 久久不射2019中文字幕| 一本色道精品久久一区二区三区| 久久不射网站| 欧美综合二区| 国产视频久久网| 99精品国产99久久久久久福利| 国内精品久久久久久久97牛牛| 一本久久综合亚洲鲁鲁| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲国产成人91精品| 亚洲一区久久| 亚洲美女91| 另类春色校园亚洲| 欧美一区二区三区婷婷月色| 欧美精品日韩一区| 麻豆国产精品一区二区三区 | 亚洲精品免费在线观看| 韩国欧美一区| 亚洲欧美在线免费| 亚洲制服欧美中文字幕中文字幕| 女女同性女同一区二区三区91| 久久久激情视频| 国产午夜精品视频| 欧美一区影院| 久久久久免费| 国产在线视频欧美| 欧美一区二区在线| 久久精品久久99精品久久| 国产美女在线精品免费观看| 亚洲女性裸体视频| 久久国产精品一区二区三区| 国产视频欧美视频| 午夜精品婷婷| 久久久精品性| 激情久久中文字幕| 久久全球大尺度高清视频| 久久综合伊人77777尤物| 在线观看三级视频欧美| 噜噜噜91成人网| 最新69国产成人精品视频免费| 91久久精品一区| 欧美区一区二区三区| avtt综合网| 久久国内精品视频| 黄色亚洲大片免费在线观看| 久久久久在线| 欧美激情aaaa| 一区二区三区国产在线观看| 国产精品老牛| 久久精品国产第一区二区三区| 久久一区国产| 亚洲人成人77777线观看| 欧美日韩1区2区| 亚洲欧美日韩精品久久久久| 久久天堂国产精品| 亚洲欧洲精品一区二区三区| 欧美日韩中文在线| 欧美一区二区三区日韩视频| 亚洲第一福利视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品普通话对白| 久久久久成人网| 日韩午夜三级在线| 久久久久在线观看| 日韩亚洲欧美一区二区三区| 国产麻豆成人精品| 欧美电影免费观看高清| 亚洲综合激情| 亚洲欧洲精品一区| 久久久九九九九| 99re国产精品| 国产综合香蕉五月婷在线| 欧美精品电影| 狂野欧美一区| 免费精品视频| 久久综合久久综合久久| 欧美亚洲视频| 欧美午夜剧场| 欧美www在线| 中文日韩欧美| 亚洲视频免费| 午夜精品福利电影| 久久国产精品久久久久久| 久久国产精品电影| 蜜桃久久av一区| 亚洲第一久久影院| 亚洲精品在线看| 亚洲一区二区三区四区中文| 午夜精品成人在线| 久久精品在线视频| 狂野欧美性猛交xxxx巴西| 欧美黄色片免费观看| 欧美日韩国产经典色站一区二区三区| 欧美人与性动交cc0o| 国产精品欧美日韩一区二区|