1. 程式人生 > 其它 >洛谷P1754 球迷購票問題 題解

洛谷P1754 球迷購票問題 題解

技術標籤:演算法javapythonleetcode區塊鏈

球迷購票問題 - 洛谷

description:

n 人手持 50 元錢, n 人手持 100 元錢。門票為 50 元。假設售票處在開始售票時沒有零錢,求能夠不出現無法找零的尷尬局面的方案總數。
  • n\le 20

solution:

\text{dp} 即可。

f_{i,j} 表示後續還有 i50 元, j100 元總方案數。

那麼

f_{i,j}=f_{i-1,j}+f_{i,j-1}(j\le i) ,即每次在 100 元不多於 50 元的時候可以選擇兩種之一。方案數累加。

時間複雜度

\Theta(n^2)

(原題的

n 的範圍就很迷。。。)

code:

#include<cstdio>
using namespace std; long long f[105][105]; int main() { int n; scanf("%d",&n); if(n==0) { printf("1\n"); return 0; } for(int i=1;i<=n;i++) { f[i][0]=1; } for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { f[i][j]=f[i-1][j]+f[i][j-1]; } } printf(
"%lld\n",f[n][n]); return 0; }