3059 - 学姐逛街
时间限制 : 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; }