Tìm Đường Đi [nhập vào mảng]
4 posters
Trang 1 trong tổng số 1 trang
Tìm Đường Đi [nhập vào mảng]
Máy bác chiến nhé.
Thêm link:
Mọi người nhấp vào chử spoiler để xem code nhé
Thêm link:
[You must be registered and logged in to see this link.]
Mọi người nhấp vào chử spoiler để xem code nhé
- Spoiler:
- Code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <process.h>
#include <iostream.h>
#define MAX 100
//Buoi 1: Lam quen voi ma tran ke.
struct GRAPH
{
int a[MAX][MAX];
int arrnLabel[MAX];
int nSoMienLienThong;
int NhanDinh[MAX];
int sodinh;
int dinhcha[MAX];
int chiphi[MAX];
int dinhdau,dinhcuoi;
int temp[5][5];
};
typedef struct CK
{
int x,y;
};
void DocMaTranKe(GRAPH &g)
{
int temp[5][5]={{0,0,4,0,3},{2,0,0,4,0},{0,0,0,0,0},{0,0,0,0,0},{0,1,2,1,0}};
g.sodinh=5;
int i,j;
for(i=0;i<g.sodinh;i++)
for(j=0;j<g.sodinh;j++)
g.a[i][j]=temp[i][j];
}
void XuatMaTranKe(GRAPH &g)
{
int i,j;
printf("\n");
for(i=0;i<g.sodinh;i++)
{
printf("\n");
for(j=0;j<g.sodinh;j++)
printf("%d ",g.a[i][j]);
}
}
int KiemTraMaTranKeHopLe(GRAPH g)
{
int i;
for(i=0;i<g.sodinh;i++)
if(g.a[i][i]!=0)
return 0;
return 1;
}
int KiemTraDoThiVoHuong(GRAPH g)
{
int i,j;
for(i=0;i<g.sodinh;i++)
for(j=0;j<g.sodinh;j++)
if(g.a[i][j]!=g.a[j][i])
return 0;
return 1;
}
//Buoi 2: Lien thong - so thanh phan lien thong.
void Visit(GRAPH &g,int dinh,int label)
{
int i;
if(dinh==g.sodinh) return;
g.NhanDinh[dinh]=label;
for(i=0;i<g.sodinh;i++)
{
if(g.NhanDinh[i]==0)
if(i!=dinh &&(g.a[dinh][i]==1||g.a[i][dinh]==1))
Visit(g,i,label);
}
}
void XetLienThong(GRAPH &g)
{
int i;
for(i=0;i<g.sodinh;i++)
g.NhanDinh[i]=0;
g.nSoMienLienThong=0;
for(i=0;i<g.sodinh;i++)
if(g.NhanDinh[i]==0)
{
g.nSoMienLienThong++;
Visit(g,i,g.nSoMienLienThong);
}
}
void InThanhPhanLienThong(GRAPH &g)
{
for(int i=1;i<=g.nSoMienLienThong;i++)
{
printf("\nMien lien thong la %d: ",i);
for(int j=0;j<g.sodinh;j++)
{
if(i==g.NhanDinh[j])
printf("\t%d",j);
}
}
}
//buoi 3
void CayKhung(GRAPH &g,CK ck[],int &nck)
{
int i,j;
nck=0;
for(i=0;i<g.sodinh;i++)
g.NhanDinh[i]=0;
g.NhanDinh[0]=1;
cout<<"sodinh"<<g.sodinh;
while(nck<g.sodinh-1)
{
for(i=0;i<g.sodinh;i++)
{
if(g.NhanDinh[i]!=0)
{
for(j=0;j<g.sodinh;j++)
{
if(g.NhanDinh[j]==0 && (g.a[i][j]==1||g.a[j][i]==1))
{
ck[nck].x=i;ck[nck].y=j;
nck++;
g.NhanDinh[j]=1;
break;
}
}
}
}
}
}
void incaykhung(CK ck[],int nck)
{
for(int i=0;i<nck;i++)
{
cout<<"\n"<<ck[i].x+1<<" "<<ck[i].y+1<<"\n";
}
}
//========Tim duong di
void TraceVisit(GRAPH &g,int n)
{
printf("\n");
int j;
if(n==g.dinhcuoi) return;
//duyet cac dinh j chua vieng co canh noi truc tiep den dinh i
for(j=0;j<g.sodinh;j++)
{
if(g.dinhcha[j]==-1 && g.a[n][j]!=0 && j!=n)
{
//luu dinh cha
g.dinhcha[j]=n;
printf("dinh cha cua %3d la %3d",j,n);
//tich luy chi phi
g.chiphi[j]=g.chiphi[n]+g.a[n][j];
TraceVisit(g,j);
}
}
}
//ham in duong di
void Induongdi(GRAPH g)
{
if(g.dinhcha[g.dinhcuoi]< 0)
{
printf("khong co duong di");
return;
}
int i=g.dinhcuoi;
printf("%3d",i);
while(i!=g.dinhdau)
{
i=g.dinhcha[i];
printf(" <-- %3d",i);
}
}
//ham tim duong di
void Timduongdi(GRAPH &g)
{
printf("\n nhap dinh dau va dinh cuoi:");
scanf("%d %d",&g.dinhdau,&g.dinhcuoi);
//khoi tao cac dinh cha =-1
for(int i=0;i<g.sodinh;i++)
g.dinhcha[i]=-1;
//khoi tao dinh xuat phat =1
g.dinhcha[g.dinhdau]=g.dinhdau ;
//khoi tao chi phi tu dinh dau den dinh dau =0
g.chiphi[g.dinhdau]=0;
TraceVisit(g,g.dinhdau);
if(g.dinhcha[g.dinhcuoi]!=-1)
{
printf("\n co duong di tu dinh %d den dinh %d",g.dinhdau,g.dinhcuoi);
printf("\n voi tong chi phi la: %d",g.chiphi[g.dinhcuoi]);
printf("\n vay duong di la: \n");
Induongdi(g);
}
else printf("khong co duong di tu dinh %d den dinh %d",g.dinhdau,g.dinhcuoi);
}
void main()
{
GRAPH g;
clrscr();
DocMaTranKe(g);
XuatMaTranKe(g);
// kiem tra ma tran ke hop le
if(KiemTraMaTranKeHopLe(g)==0)
printf("Ma tran ke khong hop le!");
//kiem tra do thi vo huong
/* if(KiemTraDoThiVoHuong(g)==1)
printf("\nDay la do thi vo huong");
else
printf("\nDay la do thi co huong"); */
// xet do thi lien thong
XetLienThong(g);
int nck;
CK ck[MAX];
if (g.nSoMienLienThong==1)
{
printf("\nDo thi lien thong.");
CayKhung(g,ck,nck);
incaykhung(ck,nck);
// cout<<nck;
}
// else
// InThanhPhanLienThong(g);
// incaykhung(ck,nck);
Timduongdi(g);
getch();
}
Được sửa bởi hoangnam610 ngày Sun Jul 15, 2012 8:32 pm; sửa lần 3.
hoangnam610- Một thời chém gió
- Tổng số bài gửi : 64
Join date : 10/05/2012
Age : 35
Re: Tìm Đường Đi [nhập vào mảng]
máy bác chú ý phần docmatran là có 2 for nhé.....
hoangnam610- Một thời chém gió
- Tổng số bài gửi : 64
Join date : 10/05/2012
Age : 35
Re: Tìm Đường Đi [nhập vào mảng]
ko có lỗi gì đâu dũng.
ông coi lai đi
kai toi chay bt ah
cám ơn nam nhé. nhẹ cả người
ít nhất cũng có kai mà nhìn (@@)
ông coi lai đi
kai toi chay bt ah
cám ơn nam nhé. nhẹ cả người
ít nhất cũng có kai mà nhìn (@@)
vandong- Quản trị diễn đàn
- Tổng số bài gửi : 87
Join date : 27/04/2012
Age : 36
Đến từ : Thanh hoa
Re: Tìm Đường Đi [nhập vào mảng]
cai nay la tim duong di vay con cay khung gi thi sao
tat ca deu lam bang mang het ma dau rieng gi cau tim duong di dau
tat ca deu lam bang mang het ma dau rieng gi cau tim duong di dau
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Re: Tìm Đường Đi [nhập vào mảng]
trong đó có cây khung lun đó bạn
còn cái câu bậc của đỉnh thì mình đang làm
còn cái câu bậc của đỉnh thì mình đang làm
Re: Tìm Đường Đi [nhập vào mảng]
hehe uh thank dung nhieu nha ,,,xem roi chay duoc roi hihi.con cau phan mo rong cai bac cua dinh nua ,,,hoi kho nhi thank nhieu
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Re: Tìm Đường Đi [nhập vào mảng]
dung oi sao test roi ma khong chay duoc cay khung vay ca mien lien thong nua
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Re: Tìm Đường Đi [nhập vào mảng]
Vì bạn chưa có khai báo dưới hàm main mà,bạn phải lôi 2 cái hàm đó xuống hàm main nữa
Re: Tìm Đường Đi [nhập vào mảng]
noi ro hon di co the up len ro hon khong
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Re: Tìm Đường Đi [nhập vào mảng]
loi roi ma van khong chay
chi chay cai ma tran
chi chay cai ma tran
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Re: Tìm Đường Đi [nhập vào mảng]
sao ko download cai file tôi kèm , copy code coi chừng thiếu, code chạy ngon mà
hoangnam610- Một thời chém gió
- Tổng số bài gửi : 64
Join date : 10/05/2012
Age : 35
Re: Tìm Đường Đi [nhập vào mảng]
test cay khung thi no ra the nay
1 2
2 5
5 4
5 3
vay ra ket qua the nay la cay khung dung khong
1 2
2 5
5 4
5 3
vay ra ket qua the nay la cay khung dung khong
tuan hung nguyen- Thành viên lớp 11A101
- Tổng số bài gửi : 25
Join date : 24/06/2012
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|