集合划分问题 2

探讨了集合划分问题,特别是在n个元素的集合中如何划分为m个非空子集。通过举例解释了不同划分情况,并指出问题与Stirling数的第二类相关。给定n和m,求解可以形成m个子集的不同划分数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合划分问题 2

Time Limit: 1000 MS    Memory Limit: 65536 Kb
Total Submission: 1390   Accepted: 606

Description

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,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,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

每组测试数据的包括一行,n (n≤10)和 m。

Output

输出由m个非空子集组成的集合的数目。每组数据一行,后面跟一个回车。

Sample Input

4 3

Sample Output

6

Hint

https://en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind

import java.util.Scanner;

/**
 * Created by DrownFish on 2016/10/31.
 */
public class Main {
    public static void main(String args[]){
        Scanner s = new Scanner(System.in);
        while(s.hasNext()){
            int n = s.nextInt();
            int m = s.nextInt();
            System.out.println(sets(n,m));
        }
    }
    static int sets(int n,int m){
        if(m==1||n==m)
            return 1;
        else
            return sets(n-1,m-1)+sets(n-1,m)*m;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值