排队购票
Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1264 Solved: 808
Description
一常球赛开始前,售票工作正在进行中。每张球票为50元,现有k(1 <= k <= 30)人排队购票,其中n人手持50元的钱,剩余m人手持100元的钱,假设开始时售票处没有钱,求出售票处不出现找不开钱的不同排队种数(拿同样钞票面值的人换位置视为同一种排队)
Input
多组测试数据,先输入整数T表示组数,然后每组输入2个整数n和m
Output
对于每组测试数据输出1行,值为题目描述中的排队种数
Sample Input
2 1 2 1 1
Sample Output
0 1
HINT
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 const int N = 30 + 5 ; 6 int dp[N][N]; 7 int T ; 8 int n,m; 9 int main() 10 { 11 //freopen ("a.txt" , "r" , stdin ) ; 12 scanf("%d",&T); 13 while( T --) 14 { 15 memset(dp,0,sizeof(dp)); 16 scanf("%d%d",&n,&m); 17 if(n < m ) { 18 puts ("0") ; 19 continue ; 20 } 21 for(int i = 0 ; i <= n ; i++) 22 { 23 for(int j = 0 ; j <= max(i,m) ; j ++) 24 { 25 if(i == 0 ) dp[i][j] = 0 ; 26 else if(j == 0 && i != 0 )dp[i][j] = 1 ; 27 else 28 { 29 dp[i][j] = dp[i-1][j]; 30 if(i > j-1) dp[i][j] += dp[i][j-1]; 31 } 32 } 33 } 34 35 printf("%d ",dp[n][m]); 36 } 37 return 0 ; 38 }