![Python编程300例:快速构建可执行高质量代码](https://wfqqreader-1252317822.image.myqcloud.com/cover/209/36862209/b_36862209.jpg)
上QQ阅读APP看书,第一时间看更新
例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.代码实现
![](https://epubservercos.yuewen.com/E3EF07/19549640501519606/epubprivate/OEBPS/Images/Figure-P35_24258.jpg?sign=1738980634-010IfiaIJs9qnhKa45wl67l9xH9fHOet-0-97889fcc2672c33f667eda583b34e5b1)
4.运行结果
人数:8 找第k组:11
第k组:[1,2,5,7]