【搜索】售貨員的煩惱(trouble)
阿新 • • 發佈:2018-07-22
mes 冰淇淋 nbsp 搜索 今天 數量 大於 urn 方案總數
題目描述
一間冰淇淋商店剛剛開張,外面有2×N個人購買1元的冰淇淋,其中一半人拿著1張2元人民幣,另一半人拿一張1元人民幣。售貨員很粗心,沒有準備零錢,要使出售過程中不發生找錢困難的問題,這2×N個人應該如何排隊?請你幫售貨員找出所有方案數量的總和。
輸入
一個整數N(N≤15)。
輸出
方案總數M。
樣例輸入
4
樣例輸出
14
#include <bits/stdc++.h> using namespace std; int n; int ans = 0; int cnt1 = 0,cnt2 = 0; void dfs(int now) { if(cnt1>n||cnt2>n) {return; } if(now==2*n) { ans++; return; } else { if(cnt1<cnt2) { return; } else { cnt1++; dfs(now+1); cnt1--; cnt2++; dfs(now+1); cnt2--; } } } int main() { cin>>n; dfs(0); cout<<ans; return 0; }
要找開錢 只需要1塊的數量大於等於2的數量 cnt1為1塊的數量 cnt2為2塊的數量
並且要註意邊界cnt1 cnt2不能大於n
寫這個題解的原因是 也許是今天寫了很多搜索 這道題迷迷糊糊的寫過了的 應該是感覺對了吧 (雖然刷的都是入門的題目)
dfs最重要的是判斷每一次搜索改變的量是什麽 邊界條件是什麽 就離AC很近了
【搜索】售貨員的煩惱(trouble)