例21 第k个组合

1.问题描述

n个人,编号分别为1,2,…,nn为偶数。选择其中的一半人,有C(nn/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]