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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【C语言】——背包问题详解

發(fā)布時(shí)間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言】——背包问题详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.題目描述:——背包問題

有若干物品,每種物品的價(jià)值和重量各不相同,將物品裝入一個(gè)容量有限的背包,如何選擇裝入的物品,使背包的價(jià)值最大。

2.題目分析:

要是背包中的物品價(jià)值最大,則需要在有限的重量中盡可能裝入價(jià)值更大的物品,基于這種思想則采取貪心算法
? ? ? ?首先計(jì)算物品的單位價(jià)值,即價(jià)值/重量,根據(jù)單位價(jià)值對(duì)物品進(jìn)行排序,優(yōu)先裝入單位價(jià)值高的物品,直至背包裝滿。

3.代碼實(shí)現(xiàn):

#include <stdio.h> int n;//物品數(shù)量 double c;//背包容量 double v[999];//物品的價(jià)值 double w[999];//物品的重量 double cw = 0.0;//背包重量 double cp = 0.0;//背包價(jià)值 double bestp = 0.0;//當(dāng)前最優(yōu)價(jià)值 double perp[999];//物品性價(jià)比排序 int order[100];//物品編號(hào) int put[100];//裝入標(biāo)識(shí) void sort() {int i,j;int temporder = 0;double temp= 0.0;for(i=1;i<=n;i++)perp[i]=v[i]/w[i];for(i=1;i<=n-1;i++){for(j=i+1;j<=n;j++)if(perp[i]<perp[j])//冒泡排序perp[],order[],sortv[],sortw[]{temp = perp[i];perp[i]=perp[j];perp[j]=temp;temporder=order[i];order[i]=order[j];order[j]=temporder;temp = v[i];v[i]=v[j];v[j]=temp;temp=w[i];w[i]=w[j];w[j]=temp;}} } void backtrack(int i) {double bound(int i);if(i>n){bestp = cp;return;}if(cw+w[i]<=c){cw+=w[i];cp+=v[i];put[i]=1;backtrack(i+1);cw-=w[i];cp-=v[i];}if(bound(i+1)>bestp)backtrack(i+1); } double bound(int i) {double leftw= c-cw;double b =cp;while(i<=n&&w[i]<=leftw){leftw-=w[i];b+=v[i];i++;}if(i<=n)b+=v[i]/w[i]*leftw;return b; } int main() {int i;printf("請(qǐng)輸入物品的數(shù)量和容量:");scanf("%d%lf",&n,&c);for(i=1;i<=n;i++){printf("第%d個(gè)物品的重量和價(jià)值:",i);scanf("%lf %lf",&w[i],&v[i]);order[i]=i;}sort();backtrack(1);printf("最大價(jià)值為:%lf\n",bestp);printf("裝入的物品次序?yàn)?#xff1a;");for(i=1;i<=n;i++){if(put[i]==1)printf("%d ",order[i]);}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的【C语言】——背包问题详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。