问题描述 :
0、1、2三个数字的全排列有六种,按照字母序排列如下:
012、021、102、120、201、210
输入一个数n
求0~9十个数的全排列中的第n个(第1个为0123456789)。
输入说明 :
一行,包含一个整数n
输出说明 :
一行,包含一组10个数字的全排列
输入范例 :
3
输出范例 :
0123456879
完整C++代码
全排列经典题目
#include <bits/stdc++.h>
using namespace std;
int n, cnt = 0;
int res[10], visit[10] = {0};
void dfs(int step) {
if (step == 10) {
cnt++;
if (cnt == n) {
for (int i = 0; i < 10; i++) {
cout << res[i];
}
}
return;
}
for (int i = 0; i <= 9; i++) {
if (visit[i] != 0) continue;
visit[i] = 1;
res[step] = i;
dfs(step + 1);
// 回溯
visit[i] = 0;
}
}
int main() {
cin >> n;
dfs(0);
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋