日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法导论答案 16.2-2 0-1背包问题的动态规划算法

發布時間:2024/8/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法导论答案 16.2-2 0-1背包问题的动态规划算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//16.2-2 動態規劃算法求解0-1背包問題#include <iostream> using namespace std;#define W 50 #define N 3 int v[N+1]={0,60,100,120};//物品價值 int w[N+1]={0,10,20,30};//物品重量 int c[N+1][W+1]={0};//c[i][j]表示在剩余容量為j的情況下,對于物品1.....i所能達到的最大價值 int x[N+1]={0};void Dynamic_Knapsack(int v[],int w[],int n,int weight)//求解最大價值 {for(int j=0;j<=weight;++j)//c[0][j]=0;for(int i=1;i<=n;++i){c[i][0]=0;for(int j=1;j<=weight;++j){if(w[i]<=j)//當還有還有剩余容量時{if(v[i]+c[i-1][j-w[i]]>c[i-1][j])//此時選擇裝入物品ic[i][j]=v[i]+c[i-1][j-w[i]];else//不裝入物品ic[i][j]=c[i-1][j];}elsec[i][j]=c[i-1][j];}} } void TraceBack(int c[][W+1],int w[],int weight,int n,int x[])//選擇被選中的物品 {for(int i=n;i>=1;--i){if(c[i][weight]==c[i-1][weight])//物品i未被選中{x[i]=0;}else//物品i被選中{x[i]=1;weight=weight-w[i];}} }void main() {Dynamic_Knapsack(v,w,N,W);cout<<"The largest value is "<<c[N][W]<<endl;TraceBack(c,w,W,N,x);for(int i=1;i<=N;i++){if(x[i]==1)cout<<"Item "<<i<<" is selected!"<<endl;}cout<<endl; }

總結

以上是生活随笔為你收集整理的算法导论答案 16.2-2 0-1背包问题的动态规划算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。