zoukankan      html  css  js  c++  java
  • 【递归】拆分自然数

    【递归】拆分自然数

    题目描述

    “天下熙熙,皆为利来;天下攘攘,皆为利往”,监狱里的暗势力划分地盘的目的无非是为了获取利益,他们分配利益的方式是基于这样一个准则:设总利益为自然数N,则任何一个大于1的N,总可以拆分成若干个小于N的自然数之和,求出N的所有拆分后选择最合适的一种进行分配,例如当N=3时,有两种划分,即3=1+2和3=1+1+1。试求出N的所有拆分。

    输入

    一个整数即N,N<100。

    输出

    输出每一种划分方案,每种划分方案占一行,最后一行为方案总数。

    样例输入

    3
    

    样例输出

    3=1+1+1
    3=1+2
    2

    分析:按序递归即可;
    代码:
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <cstring>
    #include <string>
    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <vector>
    #include <list>
    #define rep(i,m,n) for(i=m;i<=n;i++)
    #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
    #define mod 1000000007
    #define inf 0x3f3f3f3f
    #define vi vector<int>
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define ll long long
    #define pi acos(-1.0)
    const int maxn=1e2+10;
    const int dis[][2]={0,1,-1,0,0,-1,1,0};
    using namespace std;
    ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
    ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p%mod;p=p*p%mod;q>>=1;}return f;}
    ll cnt;int n,a[maxn];
    void dfs(int num,int now,int all)
    {
        if(num==0&&all!=1)
        {
            cnt++;
            printf("%d=%d",n,a[0]);
            for(int i=1;i<all;i++)printf("+%d",a[i]);
            printf("
    ");
        }
        else
        {
            for(int i=now;i<=num;i++)a[all]=i,dfs(num-i,i,all+1);
        }
    }
    int main()
    {
        int i,j,m,k,t;
        scanf("%d",&n);
        dfs(n,1,0);
        printf("%lld
    ",cnt);
        //system("pause");
        return 0;
    }
     
     
  • 相关阅读:
    Linux内存运维操作及常用命令
    Quartz定时任务
    Spark DataSource Option 参数
    Hadoop HDFS命令
    Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
    RedisUtil,Redis工具类
    通过脚本本地下载Jar包
    Redis五种数据类型-设置key的过期时间
    spark整合Phoenix相关案例
    Spark Dataset DataFrame空值null,NaN判断和处理
  • 原文地址:https://www.cnblogs.com/dyzll/p/5645468.html
Copyright © 2011-2022 走看看