马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 marlon 于 2011-12-18 17:03 编辑
#include"stdio. h" #include<conio.h> #define n 5 int a[n][n]; int flag, am, p, q; int max,ptm,qtm; Void input() {int i, j; printf(”输入图的带权邻接矩阵: \n”); for( i=0; i<n; i++) {for( j=0; j<n; j++) scanf(“%d”, &a[j]); }} Output( int a[n][n] ) {int i, j; for( i=0; i<n; i++) {for( j=0; j<n; j++) printf(“%5d”, a[j]); int max; max=0; for( i=0; i<n; i++) {for( j=0; j<n; j++) if((a1[j]>max)&&(a1[j]<=am1)&&((i!=p1)||(j!=q1))) {max=a[j]; ptmi; qtm=j; }} am=max; p=ptm; q=qtm; a[p][q]=0; a[q][p]=0; } Wshall(int array[n][n]) printf(”\ n”); }} Max(int a1[n][n], int arn1, int p1, int q1) {int i, j, ptm, qtm; int r[n][n]; int B[n][n]; {for( j=0 <n ; j++) {r[il[j]=0; B[j]=array[j]; }} for(j=0 <n ++) {for(i=0; i<n; i++) if( B[j]>=1) for( k=0; k<n; k++) B[j]=B[k]+B[j][k]; } for( i=0; i<n; i++) {for j=0; j<n; j++) {r[j]=B[j]; {if(( r[j]>=1) || ( i==j )) m=m+l; }}} if m==n*n ) flag=1; else flag=0; return(flag); } main() { int i, j, sm, wt=0; clrscr(); am=10000, P=- 1, q=- 1; sm=0; input(); {int i, j, k, m=0; int r[n][n], B[n][n]; for( i=0; i<n; i++) {for(i=0; i<n; i++) for(j=i ;j<n; j++) if( a[j]>0) Sm=sm+l; ) printf(”sm=%d\n”, sm); printf(”输出图的带权邻接矩阵: \ n”); outpiut(a); while (sm>n- l ) {max(a, am, p, q); flag=Wshall(a); {if( flag==1) Sm=Sm- 1; else {a[p][q]=am; a[q][p]=am; }}} for( i=0; i<n; i++) for( j=i; j<n; j++) wt=wt+a[il[j]; printf(”输出最小生成树的带权邻接矩阵:\n”); output(a); printf(”最小生成树的树权是: %d\n”, wt); 这是在网上抄的代码,不过有问题,不知怎解决。小弟刚入门,求高手解决! |