設狀態為 (no
w,cn
t)
(now, cnt)
(now,c
nt),now
nowno
w 表示當前要分配第幾隻貓,cnt
cntcn
t 表示已經租用了多少輛纜車;
同時記錄下每輛纜車的重量情況,dfs即可。
當前 cnt
cntcn
t 若大於等於已求的答案,直接返回;按重量給貓排序,先放重量大的。
#include
#include
using
namespace std;
inline
intread()
const
int maxn =20;
int n, w, a[maxn]
, c[maxn]
, ans =20;
inline
intcomp
(int a,
int b)
void
dfs(
int now,
int cnt)
if(cnt >= ans)
return
;for
(int i =
1; i <= cnt;
++i)
if(c[i]
+ a[now]
<= w)
c[cnt +1]
= a[now]
;dfs
(now +
1, cnt +1)
; c[cnt +1]
=0;}
intmain()
CH2201 小貓爬山
一道很基礎的深搜題,資料範圍不大,稍加剪枝即可通過。將重量降序排列,對於已經選了的車,嘗試當前的貓能不能坐,如果全部嘗試失敗,則另用一輛車。1 include 2 include 3 include 4 typedef long long ll 5 inline int read 9while c ...
CH 2201 小貓爬山 高階指南,搜尋
1 用乙個陣列,cab maxn 記錄每一輛車上所有貓的重量 void dfs int now,int cnt now 表示當前已經有多少只貓上車,車的數量是 cnt cab i cat now 選擇某一輛車 cab i 輛裝當前貓 cat now dfs now 1,cnt 遞迴 cab i ca...
小貓爬山(dfs)
時間限制 1 sec 記憶體限制 128 mb 題目描述 freda和rainbow飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 freda和rainbow只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分...