首页 > 编程语言 > 详细

【刷题第七天】递归——C++

时间:2020-06-22 11:06:07      阅读:76      评论:0      收藏:0      [点我收藏+]

【题目描述】

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

【输入】

第一行是测试数据的数目t(0≤t≤20)。以下每行均包含二个整数M和N,以空格分开。1≤M,N≤10。
【输出】
对输入的每组数据M和N,用一行输出相应的K。

【输入样例】

1
7 3

【输出样例】

8

 1 #include <iostream>
 2 using namespace std;
 3 int sf(int m, int n);
 4 int main() {
 5     int t, M, N, K;
 6     cin >> t;
 7     for (int i = 1; i <= t; i++)
 8     {
 9         cin >> M >> N;
10         K = sf(M, N);
11         cout << K << endl;
12     }
13 }
14 int sf(int m,int n) {
15     if (n == 1 || m == 0) {                          //这个一定要到底层,不然会死循环比如m==1;
16         return 1;
17     }
18 
19     if (m < n){
20         return sf(m, m);
21     }else if (m >= n) {
22         return sf(m - n, n) + sf(m, n - 1);
23     }
24 }

不要说了,扎心,又又又一道题目一点思路都没有,看过分析才会做,太失败了,注意不能死命纠结于题目算出来的数字,要通过本质去分析。

分析:https://blog.csdn.net/BeforeEasy/article/details/80149996 另外插一句啊,我的博客的链接都是在我写代码中对我有帮助的(别人的写的博客),以后再来复习的时候会方便一点,如果这犯啥规了,私聊我我把它删了(应该是隐藏了,不然白汇总了,/(ㄒoㄒ)/~~)。

【刷题第七天】递归——C++

原文:https://www.cnblogs.com/zymzymzym/p/13175651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!