生活随笔
收集整理的這篇文章主要介紹了
邻接矩阵转可达矩阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鄰接矩陣轉可達矩陣
#include"stdio.h"
#define ROW 4
#define COL 4
int A
[ROW
][COL
] = { 0 };
int P
[ROW
][COL
] = { 0 };
int tmp
[ROW
][COL
] = { 0 };
int plus
[ROW
][COL
] = { 0 };
void InitA(int A
[ROW
][COL
])
{int flag
= 1, temp
;printf("請輸入有向圖的鄰接矩陣中的數據(范圍0,1,2):\n");for (int i
= 0; i
< ROW
; i
++){for (int j
= 0; j
< COL
; j
++){flag
= 1;while (flag
){printf("%d行%d列:", i
+ 1, j
+ 1);scanf("%d", &temp
);if (temp
!= 0 && temp
!= 1 && temp
!= 2){printf("請重新輸入數字0、1、2\n");}else{A
[i
][j
] = temp
;flag
= 0;}}}}
}
void Show(int arr
[ROW
][COL
])
{printf("輸出矩陣:\n");for (int i
= 0; i
< ROW
; i
++){for (int j
= 0; j
< COL
; j
++){printf("%d ", arr
[i
][j
]);}printf("\n");}
}
void Mult(int row
, int col
,int rank
)
{for (int i
= 0; i
< row
; i
++){for (int j
= 0; j
< col
; j
++){tmp
[i
][j
] = A
[i
][j
];}}for (int i
= 0; i
< row
; i
++){for (int j
= 0; j
< col
; j
++){plus
[i
][j
] = A
[i
][j
];}}for (int r
= 1; r
< rank
; r
++){ for (int i
= 0; i
< row
; i
++){for (int j
= 0; j
< col
; j
++){tmp
[i
][j
] = tmp
[i
][j
] * A
[j
][i
];}}for (int i
= 0; i
< ROW
; i
++){for (int j
= 0; j
< COL
; j
++){plus
[i
][j
] = plus
[i
][j
] + tmp
[i
][j
];}}}
}
int main()
{InitA(A
);Show(A
);Mult(ROW
, COL
, 4-1);Show(plus
);for (int i
= 0; i
< ROW
; i
++){for (int j
= 0; j
< COL
; j
++){if (plus
[i
][j
] != 0){plus
[i
][j
] = 1;}if (i
== j
){plus
[i
][j
] = 1;}}}printf("可達矩陣為:\n");Show(plus
);return 0;
}
總結
以上是生活随笔為你收集整理的邻接矩阵转可达矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。