一道很基礎的深搜題,資料範圍不大,稍加剪枝即可通過。
將重量降序排列,對於已經選了的車,嘗試當前的貓能不能坐,如果全部嘗試失敗,則另用一輛車。
1 #include 2 #include 3 #include 4 typedef longac codelong
ll;5 inline int
read()
9while(c<='
9'&&c>='
0') ret=ret*10+c-'
0',c=getchar();
10return ret*f;11}
12using
namespace
std;
13int n,a[20],use[20
],w;
14int
ans;
15int cmp(int x,int
y) 18
void dfs(int now,int
sum)
24for(int i=1;i<=sum;i++)
25if(a[now]+use[i]<=w)
30 use[sum+1]=a[now];
31 dfs(now+1,sum+1
);32 use[sum+1]=0;33
}34intmain()
CH2201 小貓爬山 DFS
設狀態為 no w,cn t now,cnt now,c nt now nowno w 表示當前要分配第幾隻貓,cnt cntcn t 表示已經租用了多少輛纜車 同時記錄下每輛纜車的重量情況,dfs即可。當前 cnt cntcn t 若大於等於已求的答案,直接返回 按重量給貓排序,先放重量大的。in...
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只小貓的重量分...