摘要: 这道题目有两种做法,第一种是把排列一直列到第k个。另一种做法是利用康托编码,如果把n!个排列根据首个数字大小排列成n组,则每一组有(n-1)!个元素,求第k个排列,可以先令p=k/(n-1)! 求出第一个数字num[p]. 然后递归做下去。更新数字k=k%(n-1)!,并在数组num中删除num[p 阅读全文
posted @ 2016-04-02 19:15 vaevaevae 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 有关排列的题目,如果用DFS去做,就十分低效。这里介绍一种做法:求下一个序列,先从尾部开始找最长的递增数组,如果从尾到头都是递增,则这已经是最大序列,下一个序列就是将最大序列翻转一下。如果不存在递增数组,则将最后两位数交换一下。其他情况,则记录下递增数组的前一位数,并找出递增数组中比这个数大的最小的 阅读全文
posted @ 2016-04-02 19:03 vaevaevae 阅读(183) 评论(0) 推荐(0) 编辑