首页 > 学院 > 开发设计 > 正文

放苹果问题(递归)

2019-11-08 03:22:17
字体:
来源:转载
供稿:网友
/* *问题描述:把M个同样的苹果放到N个同样的盘子里面,问有多少种不同的算法?      注意:5 1 1和1 5 1是同一种放法      输入:输入一个整数表示有几行测试数据,下面每行分别输入M和N */ #include <iostream> using namespace std; int f(int m,int n) {     if(m < n)//盘子数比苹果数多的情况        return f(m,m);     if(m == 0)//没有苹果        return 0;     if(n == 0)//没有盘子,就不放,一种算法        return 1;        //苹果不少于盘子的情况     return f(m ,n-1) + f(m-n, n);//有空盘子放法和没空盘子放法 } int main() {     int t,m,n;     cin>>t;//有几组测试数据     while (t--)     {         cin >> m>>n;         cout<<"放法:"<< f(m , n) <<endl;     }     return 0; }

运行结果:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表