矩阵乘法(幂次计算)
题目描述 description
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如:
A =
1 2
3 4
A的2次幂
7 10
15 22
输入 input
第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数
接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出 output输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
样例输入 sample input
2 2
1 2
3 4
样例输出 sample output
7 10
15 22
分析:
当矩阵A的列数与矩阵B的行数相等时才可进行矩阵乘法
矩阵相乘:矩阵A*矩阵B=矩阵C
则:
矩阵C的行数等于A的行数,矩阵C的列数等于B的列数
矩阵C的第m行第n列元素等于矩阵A的第m行元素与矩阵B的第n列元素的乘积之和
代码如下
#include <stdio.h>
#include <string.h>
#define N 100
int A[N][N],t[N][N],r[N][N];
int main()
{ int n,m,i,j,k; scanf("%d%d",&n,&m); for(i=0;i<n;i++) //输入矩阵A for(j=0;j<n;j++) scanf("%d",&A[i][j]); for(i=0;i<n;i++) //初始化矩阵r (矩阵A的幂次方) r[i][i]=1;while(m--) //幂次方计算 (核心段) { memset(t,0,sizeof(t)); for(i=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++) //当一个矩阵列数等于行数时才可进行自乘,即幂次计算 t[i][j]+=r[i][k]*A[k][j]; // t[i][j]= t[i][j]+r[i][k]*A[k][j];for(i=0;i<n;i++) for(j=0;j<n;j++) r[i][j]=t[i][j]; //将中间矩阵t的值赋给矩阵r } //m次幂计算后输出矩阵rfor(i=0;i<n;i++) { for(j=0;j<n-1;j++) printf("%d ",r[i][j]); printf("%d\n",r[i][j]); } return 0;
}
运行结果
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法.
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.
矩阵乘法(幂次计算)相关推荐
- 矩阵乘法次数的计算过程
矩阵乘法次数的计算: 以两个矩阵相乘为例,A1xA2,A1和A2为两个矩阵,假设A1的行列数是pxq,A2的行列数是qxr.那么对于A1xA2而言,我们需要分别执行pxr次对应A1的行元素乘以A2的列 ...
- C语言求二阶矩阵最小值,C语言科学计算入门之矩阵乘法的相关计算
1.矩阵相乘矩阵相乘应满足的条件: (1) 矩阵A的列数必须等于矩阵B的行数,矩阵A与矩阵B才能相乘: (2) 矩阵C的行数等于矩阵A的行数,矩阵C的列数等于矩阵B的列数: (3) 矩阵C中第i行第j ...
- Luogu P3597 [POI2015]WYC___矩阵乘法快速幂+倍增
题目大意: 给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种.将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点. 无自环 ...
- 十个利用矩阵乘法解决的经典题目
出自matrix67.com 好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质. 不要以为数学 ...
- 【转载】ACM中矩阵乘法的应用
copied from 大神's blog 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符.在数学中,一个矩阵说穿了就是一个二维数组.一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是 ...
- 快速幂或者矩阵快速幂
快速幂或者矩阵快速幂在算大指数次方时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个 ...
- 矩阵之矩阵乘法(转载)
参考Matrix67:http://www.matrix67.com/blog/archives/276 十个利用矩阵乘法解决的经典题目 好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的 ...
- 【Scala-spark.mlib】本地矩阵乘法计算效率比较(稠密稀疏哪家强?)
矩阵乘法效率比较 1. 矩阵乘法 2. 效率比较 2.1. DenseMatrix(50% zeros) X DenseMatrix 2.2. SparseMatrix X DenseMatrix ...
- HDU4549(矩阵快速幂+快速幂)
f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...
- 用MapReduce实现矩阵乘法
主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...
最新文章
- linux下编译php扩展
- delete from inner join
- hdu5056(找相同字母不出现k次的子串个数)
- cocos2d实现语音_Cocos2d-x 3.2 Lua示例CocosDenshionTest(音频测试)
- hdu 1080(LCS变形)
- Android中handler的使用及原理---学习笔记
- Netty : netty 3如何解决空轮询bug
- 在程序中表示什么_程序开发中:什么是前后端分离?你搞清楚了吗?
- JVM监控及诊断工具GUI篇之Arthas(五):其他指令
- 算高差改正数的计算机程序,水准测量中测量高差的改正数怎么计算?
- 9.2-Scrapy框架爬虫【进阶】-spiders用法
- element-ui下载到本地方法(python 或java)
- 斐讯n1做服务器性能,斐讯N1:系统配置优化
- 【数据结构与算法 - 数据结构基础】什么是数据结构?
- 一、JSX语法的基本使用
- 面试不是无情物,参数注解知多少?
- unity人物刚体移动_教程篇 | Unity人物移动动画
- #遗憾#重重的挫败感再次袭来!!!
- 社交类App如何防黑产垃圾用户?
- P1209 [USACO1.3]修理牛棚 Barn Repair
热门文章
- 基于STM32的PWM电机驱动TB6612、A4950
- GoLand 连接远程代码库
- apt 安装软件出现“无法定位软件包”的问题
- pdf转的html 360看不了,360浏览器看不了pdf
- imdisk 想说爱你不容易
- Qt入门教程【高级控件篇】QTreeView树形视图
- linux下电路仿真软件下载,Virtual Breadboard免费版
- VirtualXposed 免ROOT使用Xposed模块
- 75. 颜色分类(图解)
- MATLAB_图形学_形态学课程_5个车牌扣出车牌照片