n个数的第m个全排列
作者:
dudubabala
,
2021-11-13 10:59:56
,
所有人可见
,
阅读 238
#include <iostream>
using namespace std;
const int N = 110;
int n, m;
bool vis[N];
int path[N];
bool dfs(int s) {
if(s == n) {
m--;
if(m == 0) {
for(int i = 0; i < n; i++) {
cout << path[i];
}
cout << endl;
return true;
}
return false;
}
for(int i = 1; i <= n; i++) {
if(vis[i] == false) {
vis[i] = true;
path[s] = i;
if(dfs(s + 1)) return true; #这里是我一开始没想到的
vis[i] = false;
}
}
return false;
}
int main() {
cin >> n >> m;
dfs(0); #可以不返回值
return 0;
}