Liệt kê các hoán vị của tập n phần tử theo phương pháp quay lui?

Hà Liên
Hà Liên
Trả lời 12 năm trước

#include<iostream.h>
#include<conio.h>
//Liet ke hoan vi cua n phan tu
int A[100],D[100],n,i,j,k;
void Khoitao(int n)
{
for(int i=1;i<=n;i++)
{
D[i]=0;
}
}
void Xuat(int A[],int n)
{
cout<<"";
for(int k=1;k<=n;k++)
{
cout<<A[k]<<" ";
}
}
void Lietkehoanvi(int i)
{
for(int j=1;j<=n;j++)
if(D[j]==0)
{
A[i]=j;
D[j]=1; // Danh dau da su dung j
if(i==n)
{
Xuat(A,n); // Xuat ket qua
}
else
{
Lietkehoanvi(i+1); // Thu cho buoc tiep theo
}
D[j]=0; // Huy danh dau de quay lai buoc truoc neu can
}
}
void main()
{
clrscr();
cout<<"Nhap n:";
cin>>n;
Lietkehoanvi(1);
getch();
}
#include<iostream.h>
#include<conio.h>
//Liet ke hoan vi cua n phan tu
int A[100],D[100],n,i,j,k;
void Khoitao(int n)
{
for(int i=1;i<=n;i++)
{
D[i]=0;
}
}
void Xuat(int A[],int n)
{
cout<<"";
for(int k=1;k<=n;k++)
{
cout<<A[k]<<" ";
}
}
void Lietkehoanvi(int i)
{
for(int j=1;j<=n;j++)
if(D[j]==0)
{
A[i]=j;
D[j]=1; // Danh dau da su dung j
if(i==n)
{
Xuat(A,n); // Xuat ket qua
}
else
{
Lietkehoanvi(i+1); // Thu cho buoc tiep theo
}
D[j]=0; // Huy danh dau de quay lai buoc truoc neu can
}
}
void main()
{
clrscr();
cout<<"Nhap n:";
cin>>n;
Lietkehoanvi(1);
getch();
}
#include<iostream.h>
#include<conio.h>
//Liet ke hoan vi cua n phan tu
int A[100],D[100],n,i,j,k;
void Khoitao(int n)
{
for(int i=1;i<=n;i++)
{
D[i]=0;
}
}
void Xuat(int A[],int n)
{
cout<<"";
for(int k=1;k<=n;k++)
{
cout<<A[k]<<" ";
}
}
void Lietkehoanvi(int i)
{
for(int j=1;j<=n;j++)
if(D[j]==0)
{
A[i]=j;
D[j]=1; // Danh dau da su dung j
if(i==n)
{
Xuat(A,n); // Xuat ket qua
}
else
{
Lietkehoanvi(i+1); // Thu cho buoc tiep theo
}
D[j]=0; // Huy danh dau de quay lai buoc truoc neu can
}
}
void main()
{
clrscr();
cout<<"Nhap n:";
cin>>n;
Lietkehoanvi(1);
getch();
}

#include<iostream.h>

#include<conio.h>

//Liet ke hoan vi cua n phan tu

int A[100],D[100],n,i,j,k;

void Khoitao(int n)

{

for(int i=1;i<=n;i++)

{

D[i]=0;

}

}

void Xuat(int A[],int n)

{

cout<<" ";

for(int k=1;k<=n;k++)

{

cout<<A[k]<<" ";

}

}


void Lietkehoanvi(int i)

{

for(int j=1;j<=n;j++)

if(D[j]==0)

{

A[i]=j;

D[j]=1; // Danh dau da su dung j

if(i==n)

{

Xuat(A,n); // Xuat ket qua

}

else

{

Lietkehoanvi(i+1); // Thu cho buoc tiep theo

}

D[j]=0; // Huy danh dau de quay lai buoc truoc neu can

}

}


void main()

{

clrscr();

cout<<"Nhap n:";

cin>>n;

Lietkehoanvi(1);

getch();

}