题意:
公园售票,票价五元,现在有n个有十元的人和n个有五元的人,问有多少种排列顺序让售票员在售票的时候不用用到公园内部的零钱。
思路:
动态规划,sum[i][j]表示前i个人,和为j的排列种数。
#include <cstdio>
#include <cstring>
long long sum[70][35];
void calc()
{
memset(sum, 0, sizeof(sum));
sum[0][0] = 1;
for (int i = 1; i <= 60; ++ i)
{
sum[i][0] = sum[i-1][1];
for (int j = 1; j <= 30; ++ j)
sum[i][j] = sum[i-1][j+1] + sum[i-1][j-1];
}
}
void output()
{
int n;
while (scanf("%d", &n), n)
printf("%lld\n", sum[n<<1][0]);
}
int main()
{
calc();
output();
}