class Solution {
private:
int a[10];
bool used[10];
string res;
public:
string getPermutation(int n, int k) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
res = "";
for (int i = 1; i <= n; ++i)
used[i] = false;
dfs(0, n, k);
return res;
}
void dfs(int idx, int& n, int& k)
{
if (k == 0)
return;
if (idx == n)
{
--k;
if (k == 0)
{
for (int i = 0; i < n; ++i)
{
res += (char)(a[i] + '0');
}
}
}
for (int i = 1; i <= n; ++i)
{
if (!used[i])
{
a[idx] = i;
used[i] = true;
dfs(idx + 1, n, k);
used[i] = false;
}
}
}
};[Leetcode] Permutation Sequence
最新推荐文章于 2021-03-22 00:24:14 发布
本文介绍了一种使用C++实现的生成指定位置排列的算法,通过递归调用深度优先搜索来生成第k个排列。算法利用了数组和布尔数组来标记已使用的元素,并通过递归调用来构建排列字符串。
220

被折叠的 条评论
为什么被折叠?



