3059 - 学姐逛街

通过次数

0

提交次数

0

时间限制 : 2 秒 内存限制 : 128 MB

学姐非常喜欢逛街。一天,她拿着钱包,从家里出来,钱包里有两块钱。她每路过银行,就会把钱包里的钱增加到原来的两倍,遇到商店就会花1块钱。这一路上,他一共遇到银行n(n<=10)次,遇到店m(m<=20)次,已知最后一次遇到的是店,他正好把钱花完了。 请你计算学姐遇到银行和商店的次序,可以把遇到银行记为0,遇商店记为1。例如,n=5,m=10,101001101101111 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数。

题目输入

每行输入两个整数n,m。(本题有多组测试数据)

题目输出

输出答案总数,每个答案占一行。

输入/输出样例

输入格式

0 1
0 2
5 8

输出格式

0
1
5

C++解答

#include<cstdio>
int n,m,sum,cnt;
void dfs(int x,int y,int sum)
{
    if(x==0&&y==1&&sum==1)
    {
        cnt++;
        return ;
    }
    if(x>0) dfs(x-1,y,2*sum);
    if(y>0) dfs(x,y-1,sum-1);
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        cnt=0;
        dfs(n,m,2);
        printf("%d\n",cnt);
    }
    return 0;
}