翰翰和達達飼養了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只小貓的重量分...