• 【递归】拆分自然数


    【递归】拆分自然数

    题目描述

    “天下熙熙,皆为 利来;天下攘攘,皆为利往”,监狱里的暗势力划分地盘的目的无非是为了获取利益,他们分配利益的方式是基于这样一个准则:设总利益为自然数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>
    using namespace std;
    int x[1024] = {0},total = 0,rest,N;
    void slove(int n, int m){
        for (int i = 1; i <= n; i++){
            if(i >= x[m - 1]){
                x[m] = i;
                rest = n -i;
                if (rest == 0 && m > 1){
                    total++;
                    printf("%d=",N);
                    for (int j = 1; j < m; j++){
                        printf("%d+", x[j]);
                    }
                    printf("%d
    ",x[m]);
                }
                else slove(rest, m + 1);
                x[m] = 0;
            }
    
        }
    }
    int main()
    {
       int n;
       scanf("%d",&n);
       N = n;
       slove(n,1);
       printf("%d
    ",total);
    }
    View Code
  • 相关阅读:
    软件设计工具
    电脑运行 apk
    苹果开发网站
    在Tomcat中部署war
    sql server 2000 语法
    用 xml格式 输出 jsp
    点子网站
    网站推广
    TabWidget
    Java 中文拼音 排序
  • 原文地址:https://www.cnblogs.com/cshg/p/5641798.html
Copyright © 2020-2023  润新知