话说大诗人李白, 一生好饮. 幸好他从不开车.
一天, 他提着酒壶, 从家里出来, 酒壶中有酒 2 斗. 他边走边唱:
无事街上走, 提壶去打酒.
逢店加一倍, 遇花喝一斗.
这一路上, 他一共遇到店 5 次, 遇到花 10 次, 已知最后一次遇到的是花, 他正好把酒喝光了.
请你计算李白遇到店和花的次序, 可以把遇店记为 a, 遇花记为 b. 则: babaabbabbabbbb 就是合理的次序. 像这样的答案一共有多少呢? 请你计算出所有可能方案的个数 (包含题目给出的).
- #include<iostream>
- using namespace std;
- int m, n, k, total;
- void dfs(int a, int b, int c)
- {
- if(a> 0) dfs(a - 1, b, c * 2);
- if(b> 0) dfs(a, b - 1, c - 1);
- if(a == 0 && b == 1 && c == 1)
- {
- total++;
- return ;
- }
- return ;
- }
- int main()
- {
- int T;
- cin>> T;
- for(int i = 0; i <T; ++i)
- {
- cin>> m>> n;
- dfs(m, n, 2);
- cout << total << endl;
- total = 0;
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2924821.html