zoukankan      html  css  js  c++  java
  • 【2-8】集合划分问题(给定要分成几个集合)

    ´问题描述:
    n 个元素的集合{1,2,, n }可以划分为若干个非空子集。例如,当 n=4 时,集合{1,2,
    3,4}可以划分为 15 个不同的非空子集如下:
    {{1},{2},{3},{4}},
    {{1,2},{3},{4}},
    {{1,3},{2},{4}},
    {{1,4},{2},{3}},
    {{2,3},{1},{4}},
    {{2,4},{1},{3}},
    {{3,4},{1},{2}},
    {{1,2},{3,4}},
    {{1,3},{2,4}},
    {{1,4},{2,3}},
    {{1,2,3},{4}},
    {{1,2,4},{3}},
    {{1,3,4},{2}},
    {{2,3,4},{1}},
    {{1,2,3,4}}
    其中,集合{{1,2,3,4}}由 1 个子集组成;集合{{1,2},{3,4}},{{1,3},{2,
    4}},{{1,4},{2,3}},{{1,2,3},{4}},{{1,2,4},{3}},{{1,3,4},{2}},{{2,
    3,4},{1}}由 2 个子集组成;集合{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},
    {2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{1},{2}}由 3 个子集组
    成;集合{{1},{2},{3},{4}}由 4 个子集组成。
    ´编程任务:
    给定正整数 n 和 m,计算出 n 个元素的集合{1,2,, n }可以划分为多少个不同的由 m 个
    非空子集组成的集合。
    ´数据输入:
    由文件 input.txt 提供输入数据。文件的第 1 行是元素个数 n 和非空子集数 m。
    ´结果输出:
    程序运行结束时,将计算出的不同的由m个非空子集组成的集合数输出到文件output.txt
    中。
    输入文件示例 输出文件示例
    input.txt output.txt
    4 3 6

    【题解】

    这是第二类Stirling数。 递推公式f[n][m] = f[n-1][m-1]+m*f[n-1][m] f[0][0] = 1;

    【代码】

    #include <cstdio>
    using namespace std;
    
    const int N = 100;
    
    long long f[N+10][N+10];
    
    int main(){
        f[0][0] = 1;
        for (int i = 1;i <= N;i++)
            for (int j = 1;j <= i;j++){
                f[i][j] = f[i-1][j-1]+j*f[i-1][j];
            }
        while (1){
            int n,m;
            scanf("%d%d",&n,&m);
            printf("%I64d
    ",f[n][m]);
        }
        return 0;
    }
    
    
  • 相关阅读:
    To Do List
    Linux 替换文本中对空格为下划线
    Jumpserver开源堡垒机
    用jmeter编写脚本做实时线上监控
    Supervisor使用详解
    Python模块之pysnooper
    Java读取json文件并进行处理
    IOS APP自动化测试 真机测试 遇到的坑
    测试人员入职必须了解的东西包括下面一些内容
    linux 和MacBook下的批替换
  • 原文地址:https://www.cnblogs.com/AWCXV/p/11639727.html
Copyright © 2011-2022 走看看