Luogu 普及- (递归)
放苹果
题目描述
把 个同样的苹果放在 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法。( 和 是同一种方法)
输入格式
第一行是测试数据的数目 ,以下每行均包括二个整数 和 ,以空格分开。
输出格式
对输入的每组数据 和 ,用一行输出相应的结果。
样例 #1
样例输入 #1
1
7 3
样例输出 #1
8
样例 #2
样例输入 #2
3
3 2
4 3
2 7
样例输出 #2
2
4
2
提示
对于所有数据,保证:,。
#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int apple(int m,int n,int pre) {
if(m==0 && n>0) return 0; //如果没有苹果 但是有盘子 +0
if(m>0 && n==1) { //如果有苹果 同时盘子==1
if(m<pre) { //如果剩余苹果 比 上一次放置 数量少
return 0; // +0
}else{
return 1; //如果有苹果 同时 盘子==1 同时 剩余苹果 比 上一次放置 数量少 +1
}
}
int ans = 0;
for(int i=pre; i<=m; i++) { //在当前盘子中可以放置 i 个苹果
a.push_back(i);
ans+=apple(m-i,n-1,i);
a.pop_back();
}
return ans;
}
int main() {
int q;
cin>>q;
int m,n;
while(q--) {
cin>>m>>n;
cout<<apple(m,n,0)<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」