60. Permutation Sequence
只是想说一个错误的解法:
class Solution {
public:
string getPermutation(int n, int k) {
string num = string("");
for (char c = 1; c <= n; ++c)
num += to_string(c);
dfs(num, 0, k);
return num;
}
private:
void dfs(string& num, int idx, int& cnt) {
if (idx == num.size()) {
--cnt;
return;
}
for (int i = idx; i < num.size(); ++i) {
swap(num[i], num[idx]);
dfs(num, idx+1, cnt);
if (cnt == 0)
return;
swap(num[i], num[idx]);
}
}
};
//确实不能这么做,这种交换不是按照逻辑顺序大小排列的,321在312前面。
这种交换的方法不是按照逻辑大小顺序来的