P2386[BFHIP2021] 放苹果

题目描述

把 \(m\)个同样的苹果放在 \(n\) 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法。(\(5,1,1\) 和 \(1,1,5\) 是同一种方法)

输入格式

第一行是测试数据的数目 \(t\),以下每行均包括二个整数 \(m\) 和 \(n\),以空格分开。

输出格式

对输入的每组数据 \(m\) 和 \(n\),用一行输出相应的结果。

输入输出样例

输入 #1

1
7 3

输出 #1

8

输入 #2

3
3 2
4 3
2 7

输出 #2

2
4
2

说明/提示

对于所有数据,保证:\(1\leq m,n\leq 10,0 \leq t \leq 20\)

代码

方法 #1

#include<bits/stdc++.h>
using namespace std;
int up(int a,int b)//a苹果 b盘子
{
	if(a==0||b==1) return 1;
	else if(a<b) return up(a,a);//苹果数小于盘子数 
	else return up(a-b,b)+up(a,b-1);
	//每个盘子至少放一个苹果 +至少有一个盘子为空 
}
int main()
{
	int t,m,n;
	scanf("%d",&t);
	for(int i=1;i<=t;i++){
		scanf("%d %d",&m,&n);
		printf("%d\n",up(m,n));	
	}
	return 0;
}

方法 #2

#include<bits/stdc++.h>
using namespace std;
int f(int n,int m)
{
    if(n==1||m==1||n==0)
        return 1;
    if(n<m)
        return f(n,n);
    else
        return f(n,m-1)+f(n-m,m);
}
int main()
{
     int T;
     cin>>T;
     while(T--)
     {
         int n,m;
         cin>>n>>m;
         cout<<f(n,m)<<endl;
     }
    return 0;
}
感谢您的阅读
本文链接:https://blog.bfh.ink/?p=349
本文为BFH-BLOG博主「黑果小屋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

评论

  1. 黑果小屋 博主
    Macintosh Chrome 92.0.4515.131
    1月前
    2021-8-14 10:16:30

    最近刷题好频繁啊

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇