矩阵幂(矩阵相乘)

矩阵幂(矩阵相乘)题目描述给定一个 n n 的矩阵 求该矩阵的 k 次幂 即 P k 输入描述 第一行 两个整数 n 2 lt n lt 10 k 1 lt k lt 5 两个数字之间用一个空格隔开 含义如上所示 接下来有 n 行 每行 n 个正整数 其中 第 i 行第 j 个整数表示矩阵中第 i 行第 j 列的矩阵元素 Pij 且 0 lt Pij lt 10 另外 数据保证最后结果不会超过 10 8 输出描述 对于每组测试数据 输

题目描述

给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。

输入描述:

 第一行:两个整数n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,含义如上所示。 接下来有n行,每行n个正整数,其中,第i行第j个整数表示矩阵中第i行第j列的矩阵元素Pij且(0<=Pij<=10)。另外,数据保证最后结果不会超过10^8。

输出描述:

对于每组测试数据,输出其结果。格式为: n行n列个整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。
示例1

输入

2 2 9 8 9 3 

输出

153 96 108 81 

#include<iostream> #include<string.h> using namespace std; struct matrix//用结构体封装一个二维数组 { int a[100][100]; }origin,res;//res.a存储结果 ,origin.a是需要运算的矩阵 ,k是次幂数 ,n是矩阵的行列数 matrix multiply(matrix x,matrix y,int N)//矩阵相乘函数 { matrix temp; memset(temp.a,0,sizeof(temp.a)); for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { for(int k=0;k<N;k++) { temp.a[i][j]+=x.a[i][k]*y.a[k][j]; } } } return temp; } int main() { int n,k,i,j; while(~scanf("%d%d",&n,&k)) { for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&origin.a[i][j]); k--; res=origin; while(k--) { res=multiply(res,origin,n); } for(i=0;i<n;i++){ for(j=0;j<n-1;j++) printf("%d ",res.a[i][j]); printf("%d\n",res.a[i][n-1]); } } return 0; } 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232746.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月17日 下午3:01
下一篇 2025年9月17日 下午3:22


相关推荐

  • MySQL性能优化(六):分区

    MySQL性能优化(六):分区一:分区简介分区和水平分表功能类似,将一个大表的数据分割到多张小表中去,由于查询不需要全表扫描了,只需要扫描某些分区,所以分区能提高查询速度。水平分表需要用户预先手动显式创建出多张分表(如tbl_user0,tbl_user1,tbl_user2),在物理上实实在在的创建多张表,通过客户端代理(Sharding-JDBC等)或者中间件代理(Mycat等)来实现分表逻辑。分区是My…

    2022年8月11日
    20
  • Mainframe之间的文件传输

    Mainframe之间的文件传输概述 Mainframe 主机系统之间的文件传输方式很多 下面的方法适应于 MVS OS 390 和 Z OS 系统 最常见的有以下几种情况 1 两个系统在同一个 Sysplex 中 2 两个系统共享磁盘 3 两个系统相互独立 下面分别就每种方式的文件传输加以介绍 两个系统在同一个 Sysplex 中这两个系统共享同一个 Catalog 所有文件都是共享的 所以不存在文件传输的问题

    2026年3月16日
    2
  • spring容器创建对象的时间和懒加载

    spring容器创建对象的时间和懒加载

    2021年7月19日
    61
  • CAN协议深度解析-简单易懂协议详解[通俗易懂]

    CAN协议深度解析-简单易懂协议详解[通俗易懂]CAN-bus通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔五种类型。显形隐形电平CAN-bus发布了ISO11898和ISO11519两个通信标准,此两个标准中差分电平的特性不相同。显性电平:总线上只要有1个节点驱动为显性,则总线表现为显性位电平,逻辑解析为“0”。隐形电平:只有总线上的各节点都不将总线驱动成显性电平,总线才表现为隐形位对应的电平,逻辑解析为“1”。位填充:位填充是为防止突发错误而设定的功能。当同样的电平持续5位时,则添加一个位的反型数据。数据帧数据帧结构上

    2022年6月28日
    52
  • XOR加密初识

    XOR加密初识XOR加密利用了两次异或操作仍为原值的特性。通过一个密钥,将明文与密钥进行异或操作,从而对明文加密,解密时再将密文与密钥进行一次异或操作就能恢复出明文。下面是C语言简单模拟:#include#include#defineKEY’K’//密钥intmain(){intorig_char,new_char;while((orig_char=getc

    2022年7月16日
    19
  • jsonschema校验json数据_xml schema校验

    jsonschema校验json数据_xml schema校验ajv使用在使用前,需要知道json-schema是什么。json-schemajson-schema是一个用来描述json数据格式。ajvajv是一个校验json-schem

    2022年8月2日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号