兩船載物問題

2021-07-15 19:59:59 字數 1190 閱讀 5245

時間限制:1 秒

記憶體限制:128 兆

特殊判題:否

提交:690

解決:167

題目描述:給定n個物品的重量和兩艘載重量分別為c1和c2的船,問能否用這兩艘船裝下所有的物品。

輸入:輸入包含多組測試資料,每組測試資料由若干行資料組成。

第一行為三個整數,n c1 c2,(1 <= n <= 100),(1<=c1,c2<=5000)。

接下去n行,每行乙個整數,代表每個物品的重量(重量大小不大於100)。

輸出:對於每組測試資料,若只使用這兩艘船可以裝下所有的物品,輸出yes。

否則輸出no。

樣例輸入:

3 5 863

33 5 853

4

樣例輸出:

no

yes

問題是看兩個船能不能把所有物品運走,可以分析為乙個船運走的最大物體重量,剩下的檢視重量是不是超過另乙個船的運力。就是在一條船上盡可能多的放置貨物,然後看剩下的貨物另外一條船能否裝下。

#include #include #include using namespace std;

//::vectorwts;

int boatw[101]=;

int dp[5001]=;

int sumw = 0;

void init(int n)

// *dp = new int[boat1 + 1];

memset(dp,0,(smallboat+1)*sizeof(int));

for(int i = 1;i=boatw[i]; j--)

}if(sumw - dp[smallboat] <=bigboat )else

printf("no\n"); }

void judo(){

int n;

int boat1;

int boat2;

while(scanf("%d %d %d",&n,&boat1,&boat2)!=eof){

init(n);

if(boat1