1. 程式人生 > >【搜索】售貨員的煩惱(trouble)

【搜索】售貨員的煩惱(trouble)

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)