CH2201 小貓爬山 DFS

2021-10-01 02:20:27 字數 858 閱讀 7440

設狀態為 (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只小貓的重量分...