推荐阅读:Python基础自学实用笔记(总和篇)-By Ryan_3610
6、题目:图中两个顶点的通路数
6.1代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
//输入图的关系矩阵
int n;
int num1[10][10]={0};
int num[10][10];
cin>>n;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>num[i][j];
}
}
//k阶矩阵乘法
//算法:n阶矩阵要运算到n的阶乘,最后所得就是每两点通路个数
int temp=0;
for(int k=0;k<n-1;k++) //k阶
{
for(int i=0;i<n;i++) //生成新关系矩阵
{
for(int j=0;j<n;j++)
{
temp = 0;
for (int m=0;m<n;m++)
temp += num[i][m]*num[m][j];
num1[i][j] = temp;
}
}
}
//输出所求每两点通路个数的关系矩阵
printf("----------------------------------\n");
int sum=0;
int x,y;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<num1[i][j]<<" ";
}
printf("\n");
}
//查询
cout<<"输入起始点:";
cin>>x>>y;
cout<<num1[x-1][y-1];
}
6.2测试
4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4