码迷,mamicode.com
首页 > 编程语言 > 详细

zstu深入浅出学算法020——DP——排队购票

时间:2015-04-20 20:37:08      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

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

 大意:DP是看两个状态之间的关系的不看整体,所以dp[i][j] = dp[i-1][j]是肯定满足的,如果n的数目大于等于m的话说明当前能找的开,dp[i][j] += dp[i][j-1];
技术分享
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int dp[30][30];
        memset(dp,0,sizeof(dp));
        int n,m;
        scanf("%d%d",&n,&m);
        if( n < m){
            printf("0\n");
            continue;
        }
        for(int i = 0 ; i <= n ; i++){
            for(int j = 0; j <= m ; j++){
                if(i == 0) dp[i][j] = 0;
                else if( j == 0 && i !=0 ) dp[i][j] = 1;
                else   {
                  dp[i][j] = dp[i-1][j];
                  if( i >= j) dp[i][j] += dp[i][j-1];
                }

            }
        }
        printf("%d\n",dp[n][m]);
    }
    return 0;
}
                
View Code

 

zstu深入浅出学算法020——DP——排队购票

标签:

原文地址:http://www.cnblogs.com/zero-begin/p/4442362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!