C++数的拆分

发布时间:2024年01月07日

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


文章来源:https://blog.csdn.net/Chow_Ssehc/article/details/135427677
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。