【題目敘述】https://zerojudge.tw/ShowProblem?problemid=e446
目錄
【作法-1】遞迴
#include <iostream>
using namespace std;
int N, a[15];
bool used[15];
void solve(int d) {
if (d > N) {
for (int i = 1; i <= N; i++) {
cout << a[i] << " ";
}
cout << "\n";
return;
}
for (int i = 1; i <= N; i++) {
if (used[i]) continue;
used[i] = true;
a[d] = i;
solve(d + 1);
used[i] = false;
}
}
int main() {
cin >> N;
solve(1);
return 0;
}
【作法-2】next_permutation( )
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 1; i <= N; i++) {
a[i-1] = i;
}
do {
for (int i = 0; i < N; i++) {
cout << a[i] << " ";
}
cout << "\n";
} while (next_permutation(a, a+N));
return 0;
}