ngocsohn MOD
Tổng số bài gửi : 434 Xu TP : 21279432 Cảm ơn !! : 11 Ngày sinh : 21/12/1994 Tham gia ngày: : 28/11/2010 Tuổi : 29 Đến từ : Đà Nẵng Châm ngôn sống : sống có lý tưởng
| Tiêu đề: Thuật toán duyệt theo chiều rộng và chiều sâu 02/12/10, 08:26 am | |
| Thuật toán duyệt dựa trên thuật toán hàng đợi và ngăn xếp để duyệt các đỉnh của một đồ thị. Chương trình viết bằng ngôn ngữ C (Chương trình biên dịch Dev-C) Duyệt theo chiều rộng: - Code:
-
#include <stdio.h> #include <conio.h> #include <stdlib.h> int *doc_dulieu(int *a,int *n); void Duyet_DoThi_ChieuRong(int *a,int n,int *b); void BFS(int x,int *a,int n,int *b); //Duyet tu dinh x //=================================================================== int main() { int *a,n,*b; a=doc_dulieu(a,&n); b=(int *)calloc(n,sizeof(int)); Duyet_DoThi_ChieuRong(a,n,b); getch(); return 0; } //=================================================================== int *doc_dulieu(int *a,int *n) { FILE *f; f=fopen("DFS.INP","r"); if(f==NULL) { printf("\nLoi Mo Tep."); getch(); exit(1); } fscanf(f,"%d",n); a=(int *) malloc (*n**n*sizeof(int)); for(int i=0;i<*n;i++) for(int j=0;j<*n;j++) fscanf(f,"%d",(a+i**n+j)); fclose(f); return a; } //=================================================================== void BFS(int x,int *a,int n,int *b) //Xet tai dinh x { int *c; c=(int *) malloc (n*sizeof(int)); *(b+x)=1; //Danh dau dinh x da xet for(int j=0;j { if(*(b+j)==0 && *(a+x*n+j)==1) { printf("%5d",j+1); //Cac dinh ke voi x. *(b+j)=1; *(c+j)=j; } for(int k=0;k if(*(c+k)==0) BFS(k,a,n,b); } } //=================================================================== void Duyet_DoThi_ChieuRong(int *a,int n,int *b) { for(int i=0;i if(*(b+i)==0) { printf("%5d",i+1); BFS(i,a,n,b); //B } } Duyệt theo chiều sâu: - Code:
-
#include <stdio.h> #include <conio.h> #include <stdlib.h> //=================================================================== int *doc_dulieu(int *a,int *n); void Duyet_DoThi_ChieuSau(int *a,int n,int *b); void DFS(int x,int *a,int n,int *b); //Duyet tu dinh x //=================================================================== int main() { int *a,n,*b; a=doc_dulieu(a,&n); b=(int *) calloc(n,sizeof(int)); Duyet_DoThi_ChieuSau(a,n,b); getch(); return 0; } //=================================================================== int *doc_dulieu(int *a,int *n) { FILE *f; f=fopen("DFS.INP","r"); if(f==NULL) { printf("\nLoi Mo Tep."); getch(); exit(1); } fscanf(f,"%d",n); a=(int *) malloc (*n**n*sizeof(int)); for(int i=0;i<*n;i++) for(int j=0;j<*n;j++) fscanf(f,"%d",(a+i**n+j)); fclose(f); return a; } //=================================================================== void DFS(int x,int *a,int n,int *b) { *(b+x)=1; for(int j=0;j if(*(b+j)==0 && *(a+x*n+j)==1) { printf("%5d",j+1); DFS(j,a,n,b); } } //=================================================================== void Duyet_DoThi_ChieuSau(int *a,int n,int *b) { for(int i=0;i if(*(b+i)==0) { printf("%5d",i+1); DFS(i,a,n,b); } } | |
|
loveforever MEMBER
Tổng số bài gửi : 15 Xu TP : 50948 Cảm ơn !! : 0 Ngày sinh : 19/08/1994 Tham gia ngày: : 13/12/2010 Tuổi : 30 Đến từ : Một nơi nào đó quên mất rồi thì phải :D Châm ngôn sống : Sống trên đời sống cần có một tấm nòng :
| |
sweetboy94 MEMBER
Tổng số bài gửi : 5 Xu TP : 49699 Cảm ơn !! : 0 Tham gia ngày: : 15/04/2011 Đến từ : thien duong tinh yeu Châm ngôn sống : ☺☺☺™maj~ ¥€µ m0┬. ѧµ0j`™♥♥♥
| Tiêu đề: Re: Thuật toán duyệt theo chiều rộng và chiều sâu 15/04/11, 03:44 pm | |
| mấy cái này dùng để làm gì dậy Ngọc???? | |
|
sweetboy94 MEMBER
Tổng số bài gửi : 5 Xu TP : 49699 Cảm ơn !! : 0 Tham gia ngày: : 15/04/2011 Đến từ : thien duong tinh yeu Châm ngôn sống : ☺☺☺™maj~ ¥€µ m0┬. ѧµ0j`™♥♥♥
| |
ngoc.huong182 MEMBER
Tổng số bài gửi : 32 Xu TP : 48638 Cảm ơn !! : 6 Ngày sinh : 18/02/1996 Tham gia ngày: : 03/08/2011 Tuổi : 28 Đến từ : Bang gấu trúc Châm ngôn sống : Chưa bao giờ là tất cả
| Tiêu đề: Re: Thuật toán duyệt theo chiều rộng và chiều sâu 05/08/11, 03:10 pm | |
| chưa học sao mà hiểu được | |
|
Sponsored content
| Tiêu đề: Re: Thuật toán duyệt theo chiều rộng và chiều sâu | |
| |
|