题目描述
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
当n=7共14种拆分方法:
7=1+1+1+1+1+1+1
7=1+1+1+1+1+2
7=1+1+1+1+3
7=1+1+1+2+2
7=1+1+1+4
7=1+1+2+3
7=1+1+5
7=1+2+2+2
7=1+2+4
7=1+3+3
7=1+6
7=2+2+3
7=2+5
7=3+4
total=14
输入格式
输入n。
输出格式
按字典序输出具体的方案。
样例输入
复制
7
样例输出
复制
7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2+2 7=1+1+1+4 7=1+1+2+3 7=1+1+5 7=1+2+2+2 7=1+2+4 7=1+3+3 7=1+6 7=2+2+3 7=2+5 7=3+4
提示
零基础同学可以先学习视频课程,包含C/C++、Python、百练、蓝桥杯辅导、算法数据结构等课程,提供视频讲解以及配套习题,还有老师答疑,点击这里了解课程详情
#include<bits/stdc++.h>
using namespace std;
int n;
const int N=20;
vector<int>path;
int count1=0;
void dfs(int total,int start)
{
if(total==n)
{
if(path[0]!=n)
{
cout<<n<<"=";
for(int i=0;i<path.size();i++)
{
cout<<path[i];
if(i!=path.size()-1)
{
cout<<"+";
}
}
}
cout<<endl;
}
else
{
for(int i=start;i<=n-total;i++)
{
path.push_back(i);
dfs(total+i,i);
path.pop_back();
}
}
}
int main ()
{
cin>>n;
dfs(0,1);
return 0;
}
//by crtzk7
1875

被折叠的 条评论
为什么被折叠?



