Tìm kiếm

Thủ tục đệ quy in ra tất cả các hoán vị của n phần tử của n phần tử một dãy số . a = {a1,a2,a3,....an}

//Thủ tục đệ quy in ra tất cả các hoán vị của n phần tử của n phần tử một dãy số . a = {a1,a2,a3,....an}


#include <iostream.h>
#include <conio.h>
int n,a[100],b[100],c[100];
void hv(int);


void xuat(void);


int main()
{
cout<<"CT hoan vi n so."<<endl;
cout<<"Nhap so phan tu n = ";cin>>n;
cout<<"Nhap các phan tu : "<<endl;


for ( int i = 1 ; i<=n; i++)
cin>>a[i];
hv(1);


getch();
return 0;
}


void hv(int j)
{
for ( int i = 1; i<=n; i++)
{
if ( b[i] == 0 )
{
c[j] = a[i];// a[] la mang dau vao, c[] la mang dau ra
b[i] = 1;
if ( j == n)
 xuat();
else
  hv(j+1);// Ham goi lai ham
 b[i] = 0;
}
}
}


void xuat(void)
{
for (int i = 1; i<=n; i++)
{
cout<<c[i];
}
cout<<endl;
}






Code Khác ! 


#include <iostream.h>
#include <conio.h>
#define MAX 10
int a[MAX],n;

void dao(int *x, int *y)
{
  int tg;
  tg = *x;
  *x = *y;
  *y = tg;
}

void hoanvi(int k)
{
  int j;

  if (k==1)
  {
        cout<<"\n";
        for (j=0;j<n;j++)
          cout<<a[j]<<" ";
  }
  else
        for (j=k-1;j>=0;j--)
        {
          dao(&a[k-1],&a[j]);
          hoanvi(k-1);
          dao(&a[j],&a[k-1]);
        }
}

int main()
{
  int i;

  cout<<"Nhap so phan tu cua mang : ";
  cin>>n;
  for (i=0; i<n; i++)
    a[i] = i+1;
  cout<<"Cac hoan vi  là :\n";
  hoanvi(n);
  getch();
}


Read Users' Comments (0)

0 Response to "Thủ tục đệ quy in ra tất cả các hoán vị của n phần tử của n phần tử một dãy số . a = {a1,a2,a3,....an}"

Đăng nhận xét

Support

Liên hệ DMTuan-Uneti
Mọi thông tin góp ý các bạn liên hệ với mình ! Mail:
  1. manhtuan.leo@gmail.com
  2. manhtuan.itvp@gmail.com

Y!M: manhtuan.it92