C++数的拆分

C++数的拆分

题目:
将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100)。

输入格式:
一个正整数n

输出格式:
若干行,每行一个等式(数与数之间要求非降序排列)。最后一行给出解的总个数

输入样例:
在这里给出一组输入。

C++数的拆分_第1张图片

//【参考代码】
#include 

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;
}


你可能感兴趣的:(NOI,C++基础知识,蓝桥杯C++,c++,算法,数据结构)