题目描述:输入自然数 n,然后将其分拆成由若干数相加的形式,参与加法运算的数可以重复,要求输出降序排列。
输入描述:一个待拆分的自然数n,(n≤50) 。
输出描述:若干个拆分的加法等式。
样例输入:
5
样例输出:
5=5
5=4+1
5=3+2
5=3+1+1
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
题目思想:将要分解的数字与分解出来的前一个数字以及下标用实参的方法传入函数:
void f(int n,int pre,int k){
//函数内容;
}
代码实现
#include <iostream>
using namespace std;
int ans[55],m;
void f(int n,int pre,int k){
if(n==0){
cout<<m<<"=";
for(int i=1;i<=k-2;i++){
cout<<ans[i]<<"+";
}
cout<<ans[k-1]<<endl;
return;
}else{
for(int i=min(n,pre);i>=1;i--){
ans[k]=i;
f(n-i,i,k+1);
}
}
}
int main(){
cin>>m;
f(m,m,1);
return 0;
}
代码仅供参考。。
标签:pre,递归,int,void,样例,c++,算法,分解,ans From: https://blog.csdn.net/2301_79367516/article/details/140791995