zoukankan      html  css  js  c++  java
  • 南阳oj 题目 90 整数划分

    整数划分

    时间限制:3000 ms | 内存限制:65535 KB
    难度:3

    描述
    将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,
    其中n1≥n2≥…≥nk≥1,k≥1。
    正整数n的这种表示称为正整数n的划分。求正整数n的不
    同划分个数。
    例如正整数6有如下11种不同的划分:
    6;
    5+1;
    4+2,4+1+1;
    3+3,3+2+1,3+1+1+1;
    2+2+2,2+2+1+1,2+1+1+1+1;
    1+1+1+1+1+1。

    输入
    第一行是测试数据的数目M(1<=M<=10)。以下每行均包含一个整数n(1<=n<=10)。
    输出
    输出每组测试数据有多少种分法。
    样例输入
    1
    6
    样例输出
    11
    无脑递归

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int example;
    int number;
    void dfs(int sum,int k)
    {
        if(sum==example)
        {
           number++;
           return ;
        }
        for(int i=k;i>=1;i--)
        {
            sum+=i;
            if(sum<=example)
            {
                dfs(sum,i);
            }
            sum-=i;
        }
    }
    int main()
    {
        int test;
        scanf("%d",&test);
        while(test--)
        {
            scanf("%d",&example);
            number=0;
            dfs(0,example);
            printf("%d
    ",number);
        }
        return 0;
    }
    
  • 相关阅读:
    C语言寒假大作战01
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I博客作业10
    非数值数据的编码方式
    定点数
    C语言||作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
  • 原文地址:https://www.cnblogs.com/nanfenggu/p/7900166.html
Copyright © 2011-2022 走看看