小貓爬山 dfs 剪枝

2021-10-02 19:33:30 字數 1082 閱讀 7106

翰翰和達達飼養了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≤108

輸入樣例:

5 199612

1994

1229

輸出樣例:

2

#include

#include

using

namespace std;

const

int n=20;

int s[n]

,sum[n]

;int n,m,ans=n;

void

dfs(

int u,

int k)

for(

int i=

1;i<=k;i++

)//按車列舉。是否有足夠空間車能放入貓

if(sum[i]

+s[u]

<=m)

sum[k+1]

=s[u]

;//當前無車可放,開乙個新車編號k+1

dfs(u+

1,k+1)

; sum[k+1]

=0;}

intmain()

DFS之剪枝與優化 小貓爬山

題目大意 n只貓下山,每只貓都有不同的重量,讓他們坐纜車下山,纜車有乙個最大承重樑,最少用多少纜車可以把這些貓都運下去 思路 列舉每乙隻貓,質量從大到小,使分支最少,每只貓可以加入已有的纜車或者開一輛新車 include include include using namespace std con...

ACWing 165 小貓爬山 DFS剪枝

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

小貓爬山(dfs)

時間限制 1 sec 記憶體限制 128 mb 題目描述 freda和rainbow飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 freda和rainbow只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分...