題解 球迷購票問題 C

2022-05-11 16:24:27 字數 1016 閱讀 7327

題目背景

盛況空前的足球賽即將舉行。球賽門票售票處排起了球迷購票長龍。

按售票處規定,每位購票者限購一張門票,且每張票售價為50元。在排成長龍的球迷中有n個人手持面值50元的錢幣,另有n個人手持面值100元的錢幣。假設售票處在開始售票時沒有零錢。試問這2n個球迷有多少種排隊方式可使售票處不致出現找不出錢的尷尬局面。

題目描述

例如當n=2是,用a表示手持50元面值的球迷,用b表示手持100元錢的球迷。則最多可以得到以下兩組不同的排隊方式,使售票員不至於找不出錢。

第一種:a a b b

第二種:a b a b

[程式設計任務]

對於給定的n (0≤n≤20),計算2n個球迷有多少種排隊方式,可以使售票處不至於找不出錢。

輸入輸出格式

輸入格式:

乙個整數,代表n的值

輸出格式:

乙個整數,表示方案數

輸入輸出樣例

輸入樣例#1:

2輸出樣例#1:2說明

必開qword

測試:n=15

回溯:1秒(超時)

模擬棧:大於10分鐘

遞迴演算法:1秒(超時)

動態規劃:0 ms

組合演算法:16 ms

題意:每個100元來之前必須有乙個沒走的50元,然後一起原地消失,讓人想起了括號匹配

這道題目給出的方向已經很明確了(說明都給你測試了)

很顯然,可行的操作只有動規和組合演算法。

但是!不信邪的摸魚醬用沒有回溯的dfs跑了一遍感覺還行,20組陣列超時了4組(17,18,19,20)

**:#includeusing namespace std;

int n,cnt;

void dfs(int a,int b,int step)

int main()

,n;int main()

{ cin>>n;

for(int i=2;i<=n;i++)

h[i]=h[i-1]*(4*i-2)/(i+1);

cout

球迷購票問題

球賽門票的售票處規定每位購票者限購一張門票,且每張門票售價50元。購票者中有m位手持50元錢幣,另有n人手持100元。假設售票處開始售票時無零錢。問這m n人有幾種排隊方式可使售票處不致出現找不出錢的局面。對給定的m,n 0 m,n 5000 計算出排隊方式總數。兩個整數m和n。輸出方案數.遞推了好...

1247 球迷購票問題

球賽門票的售票處規定每位購票者限購一張門票,且每張門票售價50元。購票者中有m位手持50元錢幣,另有n人手持100元。假設售票處開始售票時無零錢。問這m n人有幾種排隊方式可使售票處不致出現找不出錢的局面。對給定的m,n 0 m,n 5000 計算出排隊方式總數。輸入資料第1行為測試資料的個數t,餘...

洛谷P1754 球迷購票問題 題解

卡特蘭數經典 texttt 分拆問題。分析 題意相當於排列 n 個 texttt a 和 n 個 texttt b 使得相鄰 texttt 有序!消掉,然後左右元素並到一起再消,最後消完的序列個數。設 texttt 為乙個組 1 texttt 自巢狀一次為乙個組 2 即 texttt 以此類推。後面...