无向图的一道例题
输出c到d长度为以下长度的路径条数:
源代码
#include<stdio.h>
int mult(int a[6][6],int b[6][6],int c[6][6])
{
int i,j,k;
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
c[i][j]=0;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
for(k=0;k<6;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}//定义实现矩阵乘法的函数
int main()
{
int a[6][6]={{0,1,0,1,1,0},{1,0,1,0,1,1},{0,1,0,1,0,1},{1,0,1,0,1,0},{1,1,0,1,0,1},{0,1,1,0,1,0}},b[6][6]={{0,1,0,1,1,0},{1,0,1,0,1,1},{0,1,0,1,0,1},{1,0,1,0,1,0},{1,1,0,1,0,1},{0,1,1,0,1,0}};
int c[6][6]={0},d[6][6]={0},i,j,k=6;
while(k--)
{
mult(a,b,c);
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
b[i][j]=c[i][j];
}
}
printf("%d\n",c[2][3]);//依次输出长为2,3,4,5,6,7的路径条数
}
}
有向图的一道例题
输出a到e长度为以下长度的路径条数:
源代码
#include<stdio.h>
int mult(int a[5][5],int b[5][5],int c[5][5])
{
int i,j,k;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
c[i][j]=0;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}//定义实现矩阵乘法的函数
int main()
{
int a[5][5]={{0,1,0,1,0},{1,0,0,0,1},{0,1,0,0,0},{1,0,0,0,0},{0,0,1,1,0}},b[5][5]={{0,1,0,1,0},{1,0,0,0,1},{0,1,0,0,0},{1,0,0,0,0},{0,0,1,1,0}};
int c[5][5]={0},d[5][5]={0},i,j,k=6;
while(k--)
{
mult(a,b,c);
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
b[i][j]=c[i][j];
}
}
printf("%d\n",c[0][4]);//依次输出长为2,3,4,5,6,7的路径条数
}
}