Acwing 165 小貓爬山

2021-10-01 08:26:37 字數 1162 閱讀 6140

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。

經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了(嗚咕》_<)。

翰翰和達達只好花錢讓它們坐索道下山。

索道上的纜車最大承重量為w,而n只小貓的重量分別是c1、c2……cn.

當然,每輛纜車上的小貓的重量之和不能超過w。

每租用一輛纜車,翰翰和達達就要付1美元,所以他們想知道,最少需要付多少美元才能把這n只小貓都運送下山?

輸入格式

第1行:包含兩個用空格隔開的整數,n和w。

第2..n+1行:每行乙個整數,其中第i+1行的整數表示第i只小貓的重量ci。

輸出格式

輸出乙個整數,表示最少需要多少美元,也就是最少需要多少輛纜車。

資料範圍

1≤n≤18

1≤ci≤w≤10^8

輸入樣例:

5 199612

1994

1229

輸出樣例:
2

難度:簡單

時/空限制:1s / 64mb

總通過數:860

總嘗試數:2013

解題報告:因為這個題目給定的n的數目小,且最後的w可能達到1e8,所以不推薦使用揹包來求解,這裡採用的是dfs,我們最終的實現目標就是把n只小貓全部運下山的最小的包車數目,所以去dfs每一種可能出現的情況,最後取min值就可以。

//from onion

#include#include#include#includeusing namespace std;

typedef long long ll;

int res;

int weight[20];

int now[20];

int n,w;

void dfs(int num,int step)

for(int i=1;i<=num;i++)

}now[num+1]=weight[step];//之前的num個車放不下第step只貓,只好給他單獨開乙個新車

dfs(num+1,step+1);

now[num+1]=0;

return ;

}int main()

return 0;

}

acwing165 小貓爬山

做題心得acwing165.小貓爬山 題目翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn。當然,每輛纜車上的小貓的重...

Acwing 165 小貓爬山

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn c1 c2 cn.當然,每輛纜車上的小貓的重量之和不能超過w。每租用...

ACWING165 小貓爬山(dfs)

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn。當然,每輛纜車上的小貓的重量之和不能超過w。每租用一輛纜車,翰翰和達...