信息学奥赛一本通1206:放苹果题解

【题目描述】

把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

🆗,来讲不特殊的的~~

如图:

m为5,n为3

所以放苹果有两种可能:1.一个盘子不放,那么m不变,n-1

2.每个盘子都先放一个,那么m变为m-n,n不变

最终把两者加起来。

奥!对了

还有一种特殊情况:m

那么n就等于m

所以:

递归代码为:

int f(int m,int n)
{if(n==1||m==1||n==0||m==0){return 1; }if(m

主函数很简单,不多讲解(别跟我讲你不知道啊━━( ̄ー ̄*|||━━))

int main()
{int t;cin>>t;while(t--){int m,n;cin>>m>>n;cout<

什么?!

你问我总代码?

直接加个头文件就好了呀!

*************************************************************

龌龊的人类,你们啥时候能自己写代码!!!!( ̄_ ̄|||)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章