NWPU演算法考試複習 裝載問題

2021-08-31 13:58:11 字數 910 閱讀 2233

描述

有兩艘船,載重量分別是c1、 c2,n個貨櫃,重量是wi (i=1…n),且所有貨櫃的總重量不超過c1+c2。確定是否有可能將所有貨櫃全部裝入兩艘船。

輸入多個測例,每個測例的輸入佔兩行。第一行一次是c1、c2和n(n<=10);第二行n個整數表示wi (i=1…n)。n等於0標誌輸入結束。

輸出對於每個測例在單獨的一行內輸出yes或no。

輸入樣例

7 8 2

8 77 9 2

8 80 0 0

輸出樣例

yesno

提示求出不超過c1的最大值max,若總重量-max < c2則能裝入到兩艘船。

#include

//這道題目的思路就是找到乙個船放置貨物的最大值,然後求解另一艘船能不能放下就可以了

#include

#define n 10000

using

namespace std;

void

dfs(

int m)

;void

checkmax()

;//檢驗最大值的函式

int a[n]

,w[n]

;int c1,c2,n,max;

intmain()

dfs(0)

;if(weigh-max>c2) cout<<

"no"

"yes"

max=0;

//必須每次更新為0,因為要計算多個解}}

void

dfs(

int m)

}void

checkmax()

NWPU演算法考試複習 0 1揹包問題

描述 需對容量為c 的揹包進行裝載。從n 個物品中選取裝入揹包的物品,每件物品i 的重量為wi 價值為pi 對於可行的揹包裝載,揹包中物品的總重量不能超過揹包的容量,最佳裝載是指所裝入的物品價值最高。輸入多個測例,每個測例的輸入佔三行。第一行兩個整數 n n 10 和c,第二行n個整數分別是w1到w...

NWPU演算法考試複習 窮舉所有排列

描述 輸入乙個小於10的正整數n,按把每個元素都交換到最前面一次的方法,輸出前n個小寫字母的所有排列。輸入輸入乙個小於10的正整數n。輸出按把每個元素都交換到最前面一次的方法,輸出前n個小寫字母的所有排列。輸入樣例 3輸出樣例 abcacb bacbca cbacab include 這題也是乙個簡...

NWPU演算法考試複習 二分查詢

描述 給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。輸出每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。輸入樣...