Hoán vị các phần tử trong mảng 1 chiều

Mã:
#include "math.h"
#include "conio.h"
#include "iostream.h"
#define max 20
char DanhDau[max];	//mang danh dau dinh duoc chon
int Luu[max], A[max];
int n;
/*Khoi tao cac bien*/
void Init(){
	cout<<"Nhap n = ";
	cin>>n;
	for(int i = 0; i<n; i++) {
		/*Danh dau vi tri i chua chon*/
		DanhDau[i] = 0;
		cout<<"A["<<i<<"] = ";
		cin>>A[i];
	}
}
/*Xuat ket qua ra man hinh*/
void Out(){
	cout<<endl;
	for(int i = 0; i<n; i++)
		cout<<Luu[i]<<" ";
}
/*Chinh hop khong lap*/
void Try(int i) {
	if(i==n)
		Out();
	else {
		for(int j = 0; j<n; j++)
		if(DanhDau[j] == 0) {		//neu dinh j chua duoc chon
			DanhDau[j] = 1;		//chon dinh j
			Luu[i] = A[j];		//luu lai gia tri dinh duoc chon
			Try(i+1);		//tim dinh tiep theo
			DanhDau[j] = 0;		//phuc hoi dinh j
		}
	}
}
/*Chuong trinh chinh*/
void main(){
	clrscr();
	Init();
	cout<<"Hoan vi mang A";
	Try(0);
	getch();
}