c 旅遊揹包問題(時間限制 4000MS記憶體限制 65535K)

2021-03-21 20:23:10 字數 5514 閱讀 4681

1樓:匿名使用者

**就不想寫了,我說一下 的想法。這問題可以用貪心法來做,求出每樣物品額單位體積的**和單位重量的**去比較每個物品。想想好像又有問題,算了。你看這有沒有用吧

2樓:匿名使用者

乙個二維價值的多重揹包

c語言求教! 總時間限制: 1000ms 記憶體限制: 65536kb 描述 在標準輸出中列印字串

3樓:匿名使用者

#include

int main()

4樓:帥哥妖孽軍

#include

using namespace std;

int main()

1055:能被3除盡的數之和檢視提交統計提問時間限制: 1000ms記憶體限制: 65536kb

5樓:匿名使用者

s的初始化放到while裡面去。。不然這個第二次測試就錯了

6樓:匿名使用者

#include

void main()}

7樓:匿名使用者

為什麼不i=0;while(i*3<=n) (i++;sum+=i)呢?

時間限制: 1000ms 記憶體限制: 65536kb 描述 輸入整數a和b,如果a能被b整除,就輸

8樓:匿名使用者

我也不知道具體情況是怎麼樣,不管按你說的我感覺用while簡單些,while(1)無限迴圈,判斷b等於零,用break;退出

9樓:匿名使用者

幹嘛要迴圈?直接判斷b不就行了?

c++揹包問題

10樓:真心圍觀

//動態規劃解禮物

分配問題

#include

#include

#define n 11

#define m 51

int main()

m=sum/2;

for (i=0;i<=n;i++)//初始化for (j=0;j<=m;j++)

c[i][j]=0;

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

for (j=1;j<=m;j++)

if (v[i]<=j)

else

c[i][j]=c[i-1][j];//剩餘容量不夠int temp=m;

int x[n]=;

for (i=n;i>0;i--)

if (c[i][temp]==c[i-1][temp])//最後乙個肯定是最大價值的

x[i]=0;

else

cout<<"\nbob的禮物\t禮物序號: ";

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

if (x[i])

cout<

cout<<"\n\t\t總價值:"<

cout<<"\nalen的禮物\t禮物序號: ";

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

if(!x[i] && i)

cout<

cout<<"\n\t\t總價值:"<

getch();

return 0;

} 要詳細的文件請留郵箱

最簡單的揹包問題!用c++!

11樓:傲世修羅王

求所有解可以用回溯法,求最優解一般用動態規劃或者貪心策略。

因為題目要求所有解,故採用回溯。

先建模:

此題目等價於自然數拆分,給定乙個自然數n,將n拆分成n1 + n2 + ...+ nn,使得n1 + n2 + ...+ nn = n,且n1, n2, ...

nn中無重複數,求所有可能的拆分情況。這裡n相當於t,n1, n2,...nn相當於w1,w2,。。。

wn。建模完畢!

上**:

#include

using namespace std ;

// 儲存可行解

int a[100] ;

// 輸出乙個可行解

void output(int *a, int n)// 驗證當前解是否可行

bool isok(int* a, int curindex, int curvalue)

// 對自然數n進行拆分,t用來控制拆分個數void partition(int n, int t, int *b) }

} int main(void)

;// 揹包容量為10,從b中選若干件物品,使這些物品總量為10partition(10, 0, b) ;

system("pause") ;

return 0 ;}

12樓:魔尊

#include"stdio.h"

const int n=10; //設定物體個數const int no=2;

#define weight 10 //限制質量#define num 100

int d[num]; //總質量int c[num][weight]; //對應的物體位置void best(int a,int n)}int k0=0,k1=k;

while(ko) //ko是物體個數的統計,當不能再多時賦值為0,退出迴圈

}if(k==k1)ko=-1; //物體個數不能再多時k0=k1;k1=k;ko++;

}int ok=0;

for(i=0;i

if(m==no)

printf("\n");

} }}

if(!ok) printf("no\n");

}void main()

相應的字母沒有完全按照你這題目來,希望你能看懂!

13樓:匿名使用者

這些問題自己想想或者查一下資料再做不是比問人更好嗎?

一道c++程式設計題,求出e的值

14樓:匿名使用者

#include

#include

int main()

printf("%.10f", e);}

關於c++ 01揹包問題

15樓:物理公司的

1.  摘要

以揹包問題為例,介紹了貪心法與動態規劃的關係以及兩個方案在解決揹包問題上的比較。貪心法什麼時候能取到最優界並無一般理論,但對於普通揹包問題我們有乙個完美的結果——貪心法可取到最優解。介紹了其它一些對揹包問題的研究或者拓展。

2.  介紹

貪心演算法是我們在《演算法設計技巧與分析》這門課中所學習到的幾種重要的演算法之一,顧名思義,貪心演算法總是作出在當前看來最好的選擇。也就是該演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的從區域性的最優選擇,尋找到解決問題的次優解的方法。雖然我們希望貪心演算法得到的最終結果也是整體最優的,但是在某些情況下,該演算法得到的只是問題的最優解的近似。

3.  演算法思想:

貪心法的基本思路:

——從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到某演算法中的某一步不能再繼續前進時,演算法停止。

該演算法存在問題:

1. 不能保證求得的最後解是最佳的;

2. 不能用來求最大或最小解問題;

3. 只能求滿足某些約束條件的可行解的範圍。

實現該演算法的過程:

在約束                      下最大。

(2) 動態規劃解決方案:是解決0/1揹包問題的最優解

(i) 若i=0或j=0,  v[i,j] = 0

(ii)  若j(iii) 若i>0和j>=si, max (第一種情況是包中的i-1項已經達到最大值,第二種情況是i-1項佔j-si的體積再加上第i項的總的價值,取這兩種情況的最大值。)

//sj和vj分別為第j項物品的體積和價值,c是總體積限制。

//v[i,j]表示從前i項中取出來的裝入體積為j的揹包的物品的最大//價值。[13]

(3)貪心演算法解決揹包問題有幾種策略:

(i) 一種貪婪準則為:從剩餘的物品中,選出可以裝入揹包的價值最大的物品,利用這種規則,價值最大的物品首先被裝入(假設有足夠容量),然後是下乙個價值最大的物品,如此繼續下去。這種策略不能保證得到最優解。

例如,考慮n=2, w=[100,10,10], p =[20,15,15], c = 105。當利用價值貪婪準則時,獲得的解為x= [ 1 , 0 , 0 ],這種方案的總價值為2 0。而最優解為[ 0 , 1 , 1 ],其總價值為3 0。

(ii) 另一種方案是重量貪婪準則是:從剩下的物品中選擇可裝入揹包的重量最小的物品。雖然這種規則對於前面的例子能產生最優解,但在一般情況下則不一定能得到最優解。

考慮n= 2 ,w=[10,20], p=[5,100], c= 2 5。當利用重量貪婪策略時,獲得的解為x =[1,0], 比最優解[ 0 , 1 ]要差。

(iii) 還有一種貪婪準則,就是我們教材上提到的,認為,每一項計算yi=vi/si,即該項值和大小的比,再按比值的降序來排序,從第一項開始裝揹包,然後是第二項,依次類推,盡可能的多放,直到裝滿揹包。

有的參考資料也稱為價值密度pi/wi貪婪演算法。這種策略也不能保證得到最優解。利用此策略試解n= 3 ,w=[20,15,15], p=[40,25,25], c=30 時的最優解。

雖然按pi /wi 非遞(增)減的次序裝入物品不能保證得到最優解,但它是乙個直覺上近似的解。

而且這是解決普通揹包問題的最優解,因為在選擇物品i裝入揹包時,可以選擇物品i的一部分,而不一定要全部裝入揹包,1≤i≤n。

如圖1,大體上說明了動態規劃解決的0/1揹包問題和貪心演算法解決的問題之間的區別,

圖1(4)貪心演算法解決揹包問題的演算法實現:

**如下:

#include

struct goodinfo

;//物品資訊結構體

void insertionsort(goodinfo goods,int n)

goods[i+1]=goods[0];

}}//按物品效益,重量比值做公升序排列

void bag(goodinfo goods,float m,int n)

if(i<=n)

goods[i].x=cu/goods[i].w;//該物品所要放的量

/*按物品編號做降序排列*/

for(j=2;j<=n;j++)}

c語言士兵殺敵:幫我改一下吧,要求是:時間限制:1000 ms | 記憶體限制:65535 kb 謝了!

16樓:匿名使用者

別等了,字幕還沒出來呢,到現在貌似只有第一集有中英字幕,其它的好要等

你的串號我已經記下,採納後我會幫你製作

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

征服歐洲 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,i...

魔獸世界術士揹包問題,請問魔獸世界揹包的問題

能買的,二十格的霜紋包,你可能看錯了。靈魂包只能裝 最多32塊。前期就用普通包,開荒時,先預備好 時才用靈魂包,因為比普通包大。術士要拉糖拉門拉寶寶,做靈魂石做火炎石,都是要 的,消耗量大,靈魂包裝的多,省事。不過平時就用普通包,用不上那麼多 普通包還能裝別的東東,公升級時,排隨機時,是很缺包的。靈...

旅遊應該是帶行李箱好還是揹包,出去旅遊大家覺得帶個行李箱好還是雙肩包好一些呢

個人經驗 出去玩兒能少帶則森運東西盡量少帶,除了必需品什麼都不要帶,什麼春世都帶你會發現其實也沒用孫梁上,畢竟是以玩兒為主,背個揹包最好,拿行李箱很不方便,有時候會對行程有影響 出去旅遊大家覺得帶個行李箱好還是雙肩包好一些呢 這個要看你目的地的遠近,如果是短途遊,兩三天的時間那你帶個雙肩包就夠了,如...