• CCF NOI1077(自然数的拆分问题 )


    题目描述

    任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。拆分成的数字相同但顺序不同被看做是相同的方案,如果1+3与3+1被看做是同一种方案。

    输入

    输入待拆分的自然数n。

    输出

    如样例输出若干个拆分方案(具体见样例)。

    样例输入

    7

    样例输出

    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

    数据范围限制

    1<=n<=20

    分析:递归做。

    #include<cstdio>
    int a[30],N;
    void f(int j,int res,int k)
    {
        if(res==0) 
        {
            for(int i=0;i<k-1;i++)
                printf("%d+",a[i]);
            printf("%d
    ",a[k-1]);
        }
        for(int i=j;i<=res;i++)
        {a[k]=i;f(i,res-i,k+1);} 
    }
    
    int main()
    {
        scanf("%d",&N);
        for(int i=1;i<=N/2;i++)
        {
            a[0]=i;f(i,N-i,1);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    熟练使用有棱有角的内存
    计算机进行小数运算时出错的原因
    数据是用二进制数表示的
    代码之外的功夫
    运行库实现
    系统调用与API
    运行库
    内存
    Windows下的动态链接
    Sharding-JDBC 实现垂直分库水平分表
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8334421.html
Copyright © 2020-2023  润新知