Permutation Sequence
来源:互联网 发布:包头软件培训学校 编辑:程序博客网 时间:2024/05/22 15:17
假设有n个元素,第K个permutation是
a1, a2, a3, ..... ..., an
把a1去掉,那么剩下的permutation为
a2, a3, .... .... an, 共计n-1个元素。 n-1个元素共有(n-1)!组排列
设变量K1 = K
a1 = K1 / (n-1)!
同理,a2的值可以推导为
a2 = K2 / (n-2)!
K2 = K1 % (n-1)!
.......
a(n-1) = K(n-1) / 1!
K(n-1) = K(n-2) /2!
a1, a2, a3, ..... ..., an
把a1去掉,那么剩下的permutation为
a2, a3, .... .... an, 共计n-1个元素。 n-1个元素共有(n-1)!组排列
设变量K1 = K
a1 = K1 / (n-1)!
同理,a2的值可以推导为
a2 = K2 / (n-2)!
K2 = K1 % (n-1)!
.......
a(n-1) = K(n-1) / 1!
K(n-1) = K(n-2) /2!
an = K(n-1)
需要注意的一个地方是an表示剩下的数(按照升序排列)中的第an个
class Solution {public:string getPermutation(int n, int k) {vector<int> nums(n);int nfac = 1;for (int i = 0; i < n; ++i) {nums[i] = i + 1;nfac *= (i + 1);}//nfac初始化为n的阶乘,fac是factorial(阶乘)k--;string res = "";for (int i = 0; i < n; i++) {nfac = nfac / (n - i);//第一次循环变成n-1的阶乘,以此类推int selected = k / nfac;//selected表示剩下的数(顺序排列)中第selected个res += ('0' + nums[selected]);nums.erase(nums.begin() + selected);//删除已经被取走的数k = k % nfac;}return res;}};
0 0
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 如何用JavaScript判断dom是否有class的值?
- POI2010 题解整理
- Codeforces Round #376 (Div. 2) C.SOCKS
- Could not publish server configuration for Tomcat v7.0 Server at localhost.
- Permutation Sequence
- 高性能MySql学习笔记——锁、事务、隔离级别
- Install Mongodb (Linux)
- iOS开发基础知识:Core Animation(核心动画)
- 100天土鸡饲养计划(66)
- js复制数组
- AP 基本性能参数介绍
- 大数据学习笔记-------------------(18)
- Yii文件上传