The set [1,2,3,...,n]
contains a total of n! unique permutations.
By listing and labeling all of the permutations in order, we get the following sequence for n = 3:
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note:
- Given n will be between 1 and 9 inclusive.
- Given k will be between 1 and n! inclusive.
Example 1:
Input: n = 3, k = 3 Output: "213"
Example 2:
Input: n = 4, k = 9 Output: "2314"
题目大意:
给出两个参数n,k,输出从1...n全排列的第k个。
解题思路:
C++可以直接调用next_permutation函数,计算下一个全排列。传统的dfs方法在最后一组的排列并不会按照全排列的顺序输出。
可以参考题目:
class Solution {
public:
string getPermutation(int n, int k) {
int a[n];
string ans;
int t = 1;
for(int i=0; i<n;i++){
a[i] = i+1;
}
do{
if (t == k){
for(int i=0;i<n;i++){
ans.push_back((char)('0'+a[i]));
}
break;
}
t++;
}while(next_permutation(a, a+n));
return ans;
}
};