信息学奥赛一本通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(mint main()
{int t;cin>>t;while(t--){int m,n;cin>>m>>n;cout<什么?!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
