全国大学生算法设计与编程挑战赛——low
Description
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。
Input
第一行为一个正整数n。
Output
若干数的加法式子。
完整代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void Split(int i,int n){
while(n>0){
if(n>i)
cout<<i;
else
cout<<n;
n=n-i;
if(n>0)
cout<<"+";
}
}
int main(int argc, char** argv) {
int n;
cin>>n;
for(int i=1;i<n;i++){
Split(i,n);
cout<<endl;
}
return 0;
}
我使用的是简单的循环,如果有小伙伴写出了递归的代码可以一起交流哦!