đã lâu vắng bóng trên diễn đàn rùi do một số lý do. Hôm nay là Thứ Tư =>"Trung Thu" nhưng trong lòng không vui cảm thấy chán nên mình ngồi đọc sách thấy thuật toán thì ngồi code, nhưng lâu lắm rùi ko làm C nên viết lung túng quá quên quá nhiều. mình nghĩ đây là bài viết cuối cùng của mình ek ek :(. Mình chỉ viết chỗ tìm dấu mà nói chung là chuyển của thầy sang C thui cũng chẳng có cái j để mà bàn cả bác nào thích thì coppy về sửa cho nhanh nói chung chạy ngon và đã test thử rùi ok.Rất mong các bác sẽ cải tiến nó:/*
Chuong trinh lap trinh C : Mon To Hop
tac gia : Le Van Hung - K52A3
Code Thuat Toan 1.1 : tim dau va kieu cua hoan vi
*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
int n;// so phan tu cua Xn
int p[50];// mang p dung de luu hoan vi
int moi[50],lamda[50];// hai mang nay dung de danh dau va kieu cua hoan vi
void khoi_tao()// ham dung khoi tao dau vao cho chuong trinh
{
printf("yeu cau nhap vao hoan vi F:\n");
for(int i =1;i<=n;i++)
{
moi[i]=0;
lamda[i]=0;
scanf("%d",&p[i]);
}
}
void dau_kieu()// ham nay dung de tim dau va kieu cua hoan vi
{
int d=1,j,k;
for(int i=1;i<=n;i++)
{
if(moi[i]==0)
{
j=p[i];
k=1;
while(j!=i)
{
moi[j]=1;
j=p[j];
k=k+1;
d=-d;
}
lamda[k]=lamda[k]+1;
}
}
printf("dau cua hoan vi la d=%d",d);
}
int main()
{
printf("\n\t\t Chao mung ban den voi bai lap trinh cua tui\n");
printf("\t\t\t********************************\n");
printf("\n nhap vao n=");scanf("%d",&n);
khoi_tao();
dau_kieu();
getch();
return 0;
}
ảnh demo: