01揹包問題 動態規劃 整理成c語言!謝謝

2021-07-28 03:06:38 字數 3208 閱讀 5423

1樓:征服歐洲

#include

#include

int c[50][50];

int w[10],v[10];

int x[10];

int n;

void knapsack_dp(int n,int w);

void output_sack(int c[50][50],int k) ;

void knapsack_dp(int n,int w)else

c[i][k]=c[i-1][k];

} }} void output_sack(int c[50][50],int k) }

x[1]=(c[1][k]?1:0);

for(i=1;i<=n;i++)

printf("%4d",x[i]);

} void main()

printf("最優解為:\n");

output_sack(c,m);

system("pause");}

求動態規劃01揹包問題c語言的**,要稍微簡單且無錯的。謝謝 20

2樓:灬絲竹青衣丨丶

我寫個c++的。

#include

#define max 1111

using namespace std;

int f[max],n,m,v,w;

int main(){

cin>>n>>m;//n表示個數,m表示揹包容量for(int i=1;i<=n;++i){cin>>v>>w;//v=價值,w=重量for(int j=m;j>=w;--j)if(f[j]=w;--j)這一句變成for(int j=w;j<=m;++j)就行了。

3樓:曾浩帆

int c[10][100];/*對應每種情況的最大價值*/int knapsack(int m,int n)else c[i][j]=c[i-1][j];

}return c[n][m];

} int main()

return 0;}

4樓:匿名使用者

#include

int c[10][100];/*對應每種情況的最大價值*/int knapsack(int m,int n)else c[i][j]=c[i-1][j];

}return(c[n][m]);

}int main()

5樓:

樓上你那個不是貪婪演算法麼?

c語言,演算法,動態規劃。對於0-1揹包問題,我有個小疑問。

6樓:匿名使用者

dp(i,j)表示前i件物品選擇任意件後放進最大容量為j的揹包的最大價值。

顯然,dp(0,j)=0,dp(i,0)=0。

對於第i件物品,有兩種情況:

一、不放進揹包,則最大價值為前i-1件物品可以放進容量為j的揹包的最大價值,即dp(i,j)=dp(i-1,j)

二、放進揹包,則最大價值為第i件物品價值加上前i-1件物品卡伊放進容量為j-w[i]的揹包的最大價值,即dp(i,j)=v[i]+dp(i-1,j-w[i)

綜合兩種情況 dp(i,j)=max

分別用回溯法和動態規劃求0/1揹包問題(c語言**)

7樓:匿名使用者

#include

#include

#include typedef struct goods

goods;

double maxvalue,totalvalue;//方案最大價值,物品總價值

char *select1; //臨時陣列

void backpack(goods *g, int i, double tw, double tv)//引數為物品i,當前選擇已經達到的重量和tw,本方案可能達到的總價值

}select1[i] = 0; //取消物品i的選擇狀態

if (tv - g->value[i] > maxvalue)//若物品總價值減去物品i的價值還大於maxv方案中已有的價值,說明還可以繼續向方案中新增物品 }}

int main()

if(!(g.weight = (double *)malloc(sizeof(double)*g.num)))//分配記憶體儲存物品的重量

if(!(g.select = (char *)malloc(sizeof(char)*g.num)))//分配記憶體儲存物品的重量

if(!(select1 = (char *)malloc(sizeof(char)*g.num)))//分配記憶體儲存物品的重量

totalvalue=0;

for (i = 0; i < g.num; i++)

printf("\n揹包最大能裝的重量為:%.2f\n\n",g.limitw);

for (i = 0; i < g.num; i++)

printf("第%d號物品重:%.2f,價值:%.2f\n", i + 1, g.weight[i], g.value[i]);

for (i = 0; i < g.num; i++)//初始設各物品都沒加入選擇集

select1[i]=0;

maxvalue=0;//加入方案物品的總價值

第0號物品加入方案,總重量為0,所有物品價值為totalvalue

sumweight=0;

printf("\n可將以下物品裝入揹包,使揹包裝的物品價值最大:\n");

for (i = 0; i < g.num; ++i)

if (g.select[i])

printf("\n總重量為: %.2f,總價值為:%.2f\n", sumweight, maxvalue );

// getch();

return 0;}

8樓:匿名使用者

你看你這個問題都沒有人來回答,看來qq的金幣還不值錢呢。、偶告訴你,使用metlab直接由 01 問題 工具包,直接呼叫函式解決

動態規劃解決01揹包問題思路

9樓:

用維陣列存放解每都優沒優結構叫態規劃

答案哪要看題目要求輸哪= =看題目規定揹包空間(消耗)

lz再看看吧根本沒理解01揹包

在選購雙肩揹包中,關於揹帶有幾種問題,怎樣才能背的舒服

有減壓的揹帶.第一要寬第二不能太薄第三揹帶不直接縫在揹包背上,有一塊凹形的減壓靠墊第四揹包靠著背的那一面有一定支撐力不能太塌.這樣才舒服.個人觀點.怎麼選擇適合自己的雙肩包?主要看你想要什麼功能的,現在的雙肩包都是功能化的了,像創米桶包,我就覺得很好 不只是雙肩包,各類包類,紡織品,品質好的雙肩包的...

如何挑選戶外揹包如何挑選戶外揹包

1 看升數 2 需不需要背帳篷水袋,還是攀登類的包,就是技術包還是徒步包3 看揹負,背板是否貼合,肩膀是否受力 4 看 根據預算選不同的 5 看材質,用的什麼材質,追求輕量化,就來卡丟啦的面料6 不懂問我 我也是一位驢友常走長線,覺得揹包裝著整個旅途的家當,旅行期間有一半左右是揹著揹包度過的,所以揹...

什麼揹包防潑水,有沒有防潑水的雙肩揹包推薦?

揹包防水的話,就是那種膠皮的,或者是純皮的那種特別防水 那就要去買防水材質的揹包了,去戶外用品店問問 找一些名牌的揹包質量過得去的。這些基本上都是防潑水的。防水的話可以可以,好,你加水的時候也能打你輔助的都是好的揹包,你要試一下。你好,揹包防潑水意思就是防水的書包 用防水布料製作的揹包肯定是能防破碎...