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);
    }
     
  • 相关阅读:
    Ⅲ:作业
    Ⅱ:python入门
    Auth模块
    django中间件
    Django的cookie以及session
    form组件
    Django Ajax
    Django模板层3和ajax初始
    聚合/分组 查询 事务
    Django ORM常用模块
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9270269.html
Copyright © 2011-2022 走看看