zoukankan      html  css  js  c++  java
  • 洛谷 P2404 自然数的拆分问题

    题目背景

    任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。

    题目描述

    任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。

    输入输出格式

    输入格式:

    输入:待拆分的自然数n。

    输出格式:

    输出:若干数的加法式子。

    输入输出样例

    输入样例#1: 复制
    7
    
    输出样例#1: 复制
    1+1+1+1+1+1+1
    1+1+1+1+1+2
    1+1+1+1+3
    1+1+1+2+2
    1+1+1+4
    1+1+2+3
    1+1+5
    1+2+2+2
    1+2+4
    1+3+3
    1+6
    2+2+3
    2+5
    3+4
    解析
    搜索模版,简单dfs即可
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    vector<int> vn;
    int sum;
    int m;
    void dfs(int now)
    {
        if(sum>n) return;//判断不符合条件的边界!! 
        if(sum==n)
        {
            int m=vn.size();
            for(int i=0;i<m;i++)
            {
                if(i==m-1) cout<<vn[i]<<endl;
                else cout<<vn[i]<<"+"; 
            }
            return;
        }
        for(int i=now;i<n;i++)
        {
            sum=sum+i;
            vn.push_back(i);
            dfs(i);
            sum=sum-i;
            vn.pop_back();
        }
    }
    int main()
    {
        cin>>n;
        dfs(1);
    }
     
  • 相关阅读:
    使用gunicorn部署flask项目
    加密算法详解
    elasticsearch安装
    elk下载链接
    mysql允许远程连接
    工作流源代码分析
    查看账户的访问token
    Kube-proxy组件
    创建服务账户/查询访问token
    K8s概念2
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9270269.html
Copyright © 2011-2022 走看看