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ới n = 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ới n = 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);
}