動態規劃 0 1揹包

2021-10-01 02:45:19 字數 3206 閱讀 4152

#0-1揹包

#include

#include

using

namespace std;

int m[

100]

[100];

intmax

(int a,

int b)

void

knapsack

(int w,

int v,

int n,

int c)

for(

int i=n-

1; i>

1; i--)}

m[1]

[c]=m[2]

[c];

if(w[0]

<=c)

}void

traceback

(int w,

int n,

int c,

int x)

}if(m[n]

[c]!=0)

x[n]=1

;else

x[n]=0

;}intmain()

;int v[5]

=;int c=10;

knapsack

(w,v,n,c)

;int i,j;

for(i=

1; i<=n; i++

) cout

(w,n,c,x)

;for

(int k=

1; k<=n; k++

) cout<<<

" ";

return0;

}

#include

#include

using

namespace std;

int m[

100]

[100];

intmax

(int a,

int b)

void

knapsack

(int w,

int v,

int n,

int c)

for(

int i=

2; im[n]

[c]=m[n-1]

[c];

if(w[n-1]

<=c)

}void

traceback

(int w,

int n,

int c,

int x)

}}intmain()

;int v[5]

=;int c=10;

knapsack

(w,v,n,c)

;int i,j;

for(i=

1; i<=n; i++

) cout

(w,n,c,x)

;for

(int k=

1; k<=n; k++

) cout<<<

" ";

return0;

}

#0-1揹包問題

#include

using

namespace std;

int m[

100]

[100];

intmax

(int a,

int b)

intkanpsack

(int v,

int w,

int c,

int n)

} m[0]

[c]=m[1]

[c];

if(w[0]

<=c)

return m[0]

[c];

}void

traceback

(int w,

int c,

int n,

int x)

} x[n-1]

=(m[n-1]

[c])?1

:0;}

intmain()

;int v[5]

=;int c=10;

int s=

kanpsack

(v,w,c,n)

; cout

(w,c,n,x)

;for

(int k=

0; k) cout<<<

" ";

return0;

}

#include

#include

int v[

200]

[200];

//前i個物品裝入容量為j的揹包中獲得的最大價值

intmax

(int a,

int b)

intknapsack

(int n,

int w,

int v,

int x,

int c)

} j = c;

for(i = n -

1; i >=

0; i--

)else

x[i]=0

;}printf

("選中的物品是:\n");

for(i =

0; i)printf

("%d "

, x[i]);

printf

("\n");

for(

int i =

0; i < n; i++)}

}return v[n -1]

[c];

}int

main()

;//物品的重量

int v[5]

=;//物品的價值

int x[5]

;//物品的選取狀態

int n =5;

int c=10;

//揹包最大容量

s =knapsack

(n, w, v, x, c)

;printf

("最大物品價值為:\n");

printf

("%d\n"

, s)

;system

("pause");

return0;

}

動態規劃 01揹包

最優二叉查詢樹.cpp 定義控制台應用程式的入口點。01揹包問題。include stdafx.h include include define n 3 the number of real node define m 10 using namespace std int tmain int arg...

01揹包動態規劃

0 1揹包 問題描述 乙個旅行者有乙個最多能用 m公斤的揹包,現在有 n件物品,它們的重量 分別是w1,w2 wn,它們的價值分別為 c1,c2,cn.若每種物品只有一 件求旅行者能獲得最大總價值。輸入格式 w 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 w第2.n 1 行...

0 1揹包(動態規劃)

題意 有n件物品和乙個容量為v的揹包。第i件物品的體積是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。基本思路 這是最基礎的揹包問題,特點是 每種物品僅有一件,可以選擇放或不放。用子問題定義狀態 即f i v 表示前i件物品恰放入乙個容量為v的揹包可以獲得的最大價值。則其狀態轉移方程...