Giáo dục, tham khảo > Các môn học > Công nghệ

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

#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();

}

Hỏi đáp đề xuất

Công nghệ

Các bạn ơi! Các bạn giúp mình giải các bài toán về cộng trừ các số trong hệ 16 được không. Và cách chuyển sang hệ bù 2 dạng chuẩn.}

Còi lười 17 năm
Ví dụ đợn giản nhé! số nguyên −5 ở hệ thập phân được biểu diễn trong máy tính theo phương pháp bù 2 như sau (với... Xem thêm
Công nghệ

CĐ CNTT của ĐH KHTN có liên thông lên tại trường được không? Chương trình học thế nào? học phí bao nhiêu?}

hoàng võ anh khoa 17 năm
Có liên thông lên đại học luôn bạn ơi. Chương trình thì bạn học khoảng 3 năm cao đẳng, sau đó phải thi liên thông lên... Xem thêm