- Python编程300例:快速构建可执行高质量代码
- 李永华编著
- 291字
- 2021-03-26 23:33:12
例21 第k个组合
1.问题描述
有n个人,编号分别为1,2,…,n,n为偶数。选择其中的一半人,有C(n,n/2)种组合方式,每一种组合方式按照编号从小到大排序,再将已排序的组合方式按照字典序排序,求第k种组合方式。
字典序的定义:首先比较两个字符串的长度,长度小的字典序更小,如果长度相同,则从字符串左边开始逐位比较,找到第一位不同的字符,对应字符小的字符串,字典序更小。
2.问题示例
给出n=2,k=1,返回[1],所有组合方式按照字典序排序:[1],[2]。给出n=4,k=2,返回[1,3],所有组合方式按照字典序排序[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]。
3.代码实现
4.运行结果
人数:8 找第k组:11
第k组:[1,2,5,7]