也是终于更新了好吧!
个人主页:睡觉觉觉得
CSDN新晋作者
欢迎 点赞✍评论⭐收藏
✨收录专栏:C++蓝桥杯中级
希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!
输入两个正整数 m 和 n( 0 < m <= n <= 20),要求 m 个正整数相加的和为 n,输出满足这个条件的正整数组合有多少。
分行输入 m 和 n,(0
4
8
输出满足这个条件的正整数组合有多少,输出样例:
5
代码示例如下:
#include
using namespace std;
int m;
int n;
int f[21];
void qing(){
for(int i=1;i<=m;i++){
f[i]=0;
}
}
int yuansuan(int x,int s,int y){
if(1==s){
f[x]=y;
if(f[x]<f[x-1]){
return 0;
}
return 1;
}
int c=0;
for(int i=1;i<=y-s+1;i++){
f[x]=i;
if(f[x]>=f[x-1]){
c=c+yuansuan(x+1,s-1,y-i);
}
}
return c;
}
int main (){
while(cin>>m>>n){
int d=yuansuan(1,m,n);
cout<<d<<endl;
}
}