zoukankan      html  css  js  c++  java
  • 自然数的拆分问题 字典序

    转载请注明出处

    题目描述

    对于大于1的自然数N,可以拆分成若干个大于等于1的自然数之和。

    Input

    一个大于1的自然数N

    Output

    所有的拆分情况.按字典序排列。

    Sample Input

    6

    Sample Output

    6=1+1+1+1+1+1
    6=1+1+1+1+2
    6=1+1+1+3
    6=1+1+2+2
    6=1+1+4
    6=1+2+3
    6=1+5
    6=2+2+2
    6=2+4
    6=3+3
    6=6 

    Hint

    注意观察数字的变化规律 
    同一层的数从左往右,从右往左都分析下。 
    上下两层的关系也分析下

     1 /**
     2     网址:http://www.codeup.cn/problem.php?id=2910
     3     题目:自然数的拆分问题 字典序
     4 */
     5 
     6 #include <stdio.h>
     7 int N;
     8 int result[100];
     9 
    10 void print(int n){
    11     int i;
    12     printf("%d=",N);
    13     for(i = 0; i < n - 1; i++){
    14         printf("%d+",result[i]);
    15     }
    16     printf("%d
    ",result[i]);
    17 }
    18 
    19 /**
    20     cur:当前要填的数字
    21     leave:差
    22 */
    23 void search(int cur,int leave){
    24     if(leave <= 0){
    25         print(cur);
    26         return ;
    27     }
    28 
    29     for(int i = 1; i <= N; i++){
    30         if(leave >= i && i >= result[cur - 1]){
    31             result[cur] = i;
    32             search(cur + 1, leave - i);
    33 
    34         }
    35         if(leave < i)
    36             break;
    37 
    38     }
    39 }
    40 
    41 int main(void){
    42     while(scanf("%d",&N) != EOF){
    43         search(0,N);
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    内存溢出和内存泄漏的区别、产生原因以及解决方案
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
    TCP, UDP, HTTP, HTTPS协议
    测试面试常见面试题汇总
    SDK测试方法
    App弱网测试工具--Qnet
    PerfDog性能狗移动端性能测试工具
    Jmeter作用域
    事务(转账功能)
    DBUtils
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5402540.html
Copyright © 2011-2022 走看看