C++数的拆分
题目:
将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100)。
输入格式:
一个正整数n
输出格式:
若干行,每行一个等式(数与数之间要求非降序排列)。最后一行给出解的总个数
输入样例:
在这里给出一组输入。
//【参考代码】
#include <iostream>
using namespace std;
int n;
int num = 0;//计数器
int path[100];
int index = 0;//path的下标
void dfs(int begin, int left)
{
if(left==0)//成立的临界值
{
for(int i=0; i<index-1;i++)
{
cout<<path[i]<<"+";
}
cout<<path[index-1]<<endl;//最后的一个数字不加+
num++;
return;
}
if(left<0)//不成立 停止
{
return;
}
for(int i=begin; i<=n; i++)//遍历逐步增多
{
path[index] = i;
index++;
dfs(i,left-i);
index--;//回溯
}
}
int main()
{
cin>>n;
dfs(1,n);
cout<<"total="<<num;
return 0;
}