『壹』 演算法設計題
(再版)
0-1背包問題
0-1背包問題:給定n種物品和一個背包。項目我的體重是無線網路,它的價格是vi背包容量C.
Q:我應該如何選擇裝載物品的背包,使得裝入背包的總價值呢?
選擇項目裝入背包的每個項目我只有兩種選擇,即裝入背包或不裝入背包。項目i裝入背包多次,不僅載入的項目我。
因此,這個問題被稱為0-1背包問題。
?0-1解向量(X1,X2,...,XN),西安∈{0,1},1 <= I <= N。
動態編程解決方案:
集0-1背包問題給定的子最優值,M(I,J),M(我,j)是第j背包容量,可選擇的項目我,我+1,...,N 0-1背包問題的最優值
無效背包()
INT I,J;
為(i = 0; I <=我+ +)
為(J = 0 J <= JMAX; J + +)
M [] [J] = 0;
(i = 0; <= n; i + + )
為(J = 0; <= JMAX; J + +)
(W [I]> J)
米[I] [J] = M [I-1] [J];
其他
M [] [J] = MAX(M [I-1] [J],M [I-1] [JW [我] + V [I]);
printf的(「%d \ N」,M [N] [C]); BR />
}
回溯解決方案:
無效1背包(I)
{
BR />(>),百視通= CV
其他
{
(CW + W [I] <= C )
{
CW + = W [我];
CV + = V [I];
背包(i +1);
CW-= W [I];
CV-= V [I];
}
a>
背包(+1);
}
}
『貳』 演算法設計問題(程序)
四次三項式:最高次數為4,有3項
(1)
1種情況,m+1≠0,n-4=0,
此時m≠-1,n=4,有四次三項式
(m+1)x^3 y +5xy-1
2種情況,m+1=0,n-4≠0,n-1=2
此時m=-1,n=3,有四次三項式
x^2 y^2 +5xy-1
(2)
必須m+1=0, n-1=1
此時m=-1,n=2,有三次三項式
3x^2 y +5xy-1
『叄』 急急急,正在做作業,演算法設計題是要怎樣做啊,寫個C語言還是只寫個中文步驟啊,或者都要啊
演算法設計題只需要寫出相應的數據結構和用文字描述的步驟。
如果你高興,把步驟用偽代碼描述更好。
對於這類題目,程序是絕對不需要的,千萬不要寫程序:即費時間,又沒人看。
『肆』 演算法設計題
(轉帖)
0-1背包問題
0-1背包問題:給定n種物品和一背包.物品i的重量是wi,其價格是vi,背包的容量為C.
問:應該如何選擇裝入背包的物品,使得裝入背包中的總價值最大?
在選擇裝入背包的物品時,對每種物品i只有兩種選擇,即裝入背包或不裝入背包.不能將物品i裝入背包多次,也不能只裝入部分的物品i.
因此,該問題稱為0-1背包問題.
設n元0-1解向量(x1,x2,...,xn),xi∈{0,1},1<=i<=n.
動態規劃解法:
設所給0-1背包問題的子問題的最優值為m(i,j),既m(i,j)是背包容量為j,可選擇物品為i,i+1,...,n時0-1背包問題的最優值.
void knapsack()
{
int i,j;
for(i=0;i<=n;i++)
for(j=0;j<=jMax;j++)
m[i][j]=0;
for(i=0;i<=n;i++)
for(j=0;j<=jMax;j++)
if(w[i]>j)
m[i][j]=m[i-1][j];
else
m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i]);
printf("%d\n",m[n][C]);
}
回溯解法:
void knapsack(int i)
{
if(i>n)bestv=cv;
else
{
if(cw+w[i]<=C)
{
cw+=w[i];
cv+=v[i];
knapsack(i+1);
cw-=w[i];
cv-=v[i];
}
knapsack(i+1);
}
}