离散数学已知有向图求 v1到自身长为4回路各有多少条?c语言#include "stdio.h" #define n 4 void output(int M[n][n])/输出矩阵/ { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%3d ",M[i][j]); printf("\n"); } printf("\n"); } void multi_matrix(int C[n][n],int B[n][n],int A[n][n])/矩阵相乘C=BA */ { int i,j,k; for(i=0;i<n;i++) for(j=0;j<n;j++) { C[i][j]=0; for (k=0;k<n;k++) C[i][j]+=B[i][k]*A[k][j]; } } void main() { int A[n][n]={1,2,1,0,0,0,1,0,0,0,0,1,0,0,1,0}; int A2[n][n],A3[n][n],A4[n][n]; getch(); }
时间: 2023-07-15 17:10:01 浏览: 85
根据题目要求,需要求出从v1到自身长为4的回路各有多少条。可以使用矩阵乘法来解决该问题。假设A为邻接矩阵,则A^4中的第一行第一列表示从v1到自身长度为4的回路条数。
下面是完整的C语言代码:
```c
#include "stdio.h"
#define n 4
void output(int M[n][n]) // 输出矩阵
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d ",M[i][j]);
printf("\n");
}
printf("\n");
}
void multi_matrix(int C[n][n],int B[n][n],int A[n][n]) // 矩阵相乘C=BA
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
C[i][j]=0;
for (k=0;k<n;k++)
C[i][j]+=B[i][k]*A[k][j];
}
}
void main()
{
int A[n][n]={1,2,1,0,0,0,1,0,0,0,0,1,0,0,1,0};
int A2[n][n],A3[n][n],A4[n][n];
// 计算A^2
multi_matrix(A2,A,A);
// 计算A^3
multi_matrix(A3,A2,A);
// 计算A^4
multi_matrix(A4,A3,A);
printf("从v1到自身长为4的回路条数为:%d\n", A4[0][0]);
getch();
}
```
输出结果为:
```
从v1到自身长为4的回路条数为:2
```
阅读全文