【C语言】C语言实现矩阵k次幂 (模拟手工计算过程,简单逻辑)

本文介绍如何用C语言通过递归方法实现矩阵的k次幂运算,模拟手工计算过程。该方法适用于以邻接矩阵存储的图算法,但详细理论未展开讨论。示例展示了输入4时的计算结果。
摘要由CSDN通过智能技术生成

运用递归实现k次幂运算,模拟手工计算

注释掉的输出部分便于调试过程中检查使用

使用说明:输入一个数字k,计算矩阵的k次幂,输出原矩阵以及其k次幂矩阵

矩阵的k次幂可用于以邻接矩阵存储的图的算法中,具体原理涉及到离散数学,在此不作证明。

 

#include <stdio.h>
#define N 4															//N阶矩阵 
void Func(int A[N][N],int B[N][N],int C[N][N],int n,int cnt,int k)	//N阶矩阵的k次幂运算  k为奇数 b为最终结果,k为偶数,c为最终结果 
{
	int i,j,temp,sum=0;
	int x=0,y=0;						
	int v=0;
	cnt++;									//记录当前计算的幂次数 
	if(cnt<k) 
	{
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
//				printf("%d\t",A[v][j]);
//				printf("%d\t",B[j][i]);
				temp=A[v][j]*B[j][i];
				sum+=temp;
//				printf("%d\n",temp);
			}	
			C[x][y++]=sum;
//			printf("%d\n",sum);
			sum=0;
			if(y>=n)				 
			{
				y=0;
				x++;
			}
			if(i==n-1 && v!=n-1)	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值