CTDL và giải thuật - In các chuỗi hoán vị của các số từ 1 đến n
Nhập vào một số nguyên n
(1 ≤ n ≤ 9
).
In các chuỗi hoán vị của các số từ 1
đến n
, các chuỗi tăng dần theo thứ tự từ điển, sau mỗi chuỗi hoán vị có đúng một khoảng trắng.
Ví dụ:
- Test mẫu 1:
Input Output 3 123 132 213 231 312 321
Vớin = 3
thì kết quả mong muốn là:"123 132 213 231 312 321 "
.
- Test mẫu 2:
Input Output 4 1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321
Vớin = 4
thì kết quả mong muốn là:"1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321 "
Hướng dẫn bài tập.
Code mẫu:
Ngôn ngữ C++:
#include<iostream>
using namespace std;
bool b[11];
int x[11];
void printArray(int a[], int n){
for (int i = 1; i <= n; i++){
cout << a[i];
}
cout <<" ";
}
void dequy(int k, int n){
for (int i = 1; i <= n; i++){
if (b[i]){
x[k] = i;
if (k == n){
printArray(x, n);
} else {
b[i] = false;
dequy(k+1, n);
b[i] = true;
}
}
}
}
int main(){
int n;
cin >> n;
for (int i = 1; i <=n; i++){
b[i] = true;
}
dequy(1, n);
}