前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基础练习 矩阵乘法

基础练习 矩阵乘法

作者头像
刘开心_1266679
发布于 2019-02-14 07:31:27
发布于 2019-02-14 07:31:27
88700
代码可运行
举报
运行总次数:0
代码可运行

问题描述

  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22

输入格式

  第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数   接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值

输出格式

  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开

样例输入

2 2 1 2 3 4

样例输出

7 10 15 22 思路:         由于矩阵都是方阵,所以不需要考虑每次相乘的两个矩阵的顺序,大大降低了题的难度,按照矩阵乘法规则递归调用求解。也可以重载" * ",下面只给出了主要代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//#define LOCAL
#include <cstdio>
#include <cstring>
#define MAX_X 30
#define MAX_Y 30

int n, m;
struct Matrix
{
	int x, y;  //角标
	int a[MAX_X][MAX_Y]; //内容 
	void clear()
	{
		x = y = 0;
		memset(a, 0, sizeof(a));
	}
};

void PrintMatrix(Matrix &a, int n)
{
	for(int i = 0; i < n; i++)
	{	
		int first = 1;
		for(int j = 0; j < n; j++)
		{
			if(first)
			{
				printf("%d", a.a[i][j]);
				first = 0;
			}
			else
			{
				printf(" %d", a.a[i][j]);
			}
		}
		printf("\n");
	}
}

Matrix Multiplication(Matrix &a, Matrix &b)   //n:阶数  , count:幂 -1
{
	Matrix tmp;
	tmp.clear();   //初始化矩阵 
	for(int k = 0; k < n; ++k)  //k:积矩阵行
	{
		for(int x = 0; x < n; ++x) 
		{
			for(int y = 0; y < n; ++y)
			{
				tmp.a[k][x] += a.a[k][y] * b.a[y][x];
			}
		}
	} 

	return tmp;
}

int main()
{
#ifdef LOCAL
	freopen("input3.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	Matrix a, ans;
	scanf("%d", &n);
	scanf("%d", &m);
	a.x = a.y = n; 
	for(int i = 0; i < a.x; i++)
	{
		for(int j = 0; j < a.y; j++)
		{
			scanf("%d", &a.a[i][j]);
			ans.a[i][j] = a.a[i][j];
		}
	}
	if(m == 0)
	{
		for(int i = 0; i < n; i++)
		{
			for(int j = 0; j < n; j++)
			{
				ans.a[i][j] = (i == j) ? 1 : 0;	
			}	
		}	
	} 
	else
	{
		for(int i = 0; i < m-1; i++)
		{
			ans = Multiplication(ans, a);
		}
	}
	PrintMatrix(ans, n);
	return 0;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct Matrix
{
	int n, m;
	int a[MAXN][MAXM];
	void clear()
	{
		n = m = 0;
		memset(a, 0, sizeof(a));
	}
	Matrix operator * (const Matrix &b) const
	{
		Matrix tmp;
		tmp.clear();
		tmp.n = n;
		tmp.m = b.m;
		for(int i = 0; i < n; ++i)
		{
			for(int j = 0; j< b.m; ++j)
			{
				for(int k = 0; k < m; ++k)
				{
					tmp.a[i][j] += a[i][k] * b.a[k][j];
				}
			}
		}
		return tmp;
	}
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年03月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
使用了这个数据库神器,让我工作效率提升了数倍
很多时候,我们需要在本地电脑上,直接连接开发或测试环境的数据库,方便对数据进行增删改查。当然很多数据库都提供了自带的客户端,比如mysql的客户端是这样的:
苏三说技术
2022/08/25
9580
使用了这个数据库神器,让我工作效率提升了数倍
★Navicat For Mysql 数据库备份与还原
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135512.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
5K0
★Navicat For Mysql 数据库备份与还原
Navicat操作MySQL简易教程
日常使用 MySQL 的过程中,我们可能会经常使用可视化工具来连接 MySQL ,其中比较常用的就是 Navicat 了。平时也会遇到某些同学问, Navicat 怎么安装,如何使用等问题。本篇文章笔者将结合个人经验,分享下 Navicat 操作 MySQL 简易教程。
MySQL技术
2021/03/23
2.2K0
Navicat操作MySQL简易教程
数据库管理工具:如何使用 Navicat for MySQL 导出导入数据表 Excel 文件?
Navicat 导出数据表的格式很多,增加了对 Excel 2007 以上版本的支持,当设计完一个表后,如果有上百条或更多的数据需要导入 MySQL 数据库时,我们可以先把设计好的数据导出到一个 Excel 表中,然后按照格式去填充,最后把这些填充完的数据再导入到 MySQL 数据库中。
白鹿第一帅
2022/11/30
5.3K0
数据库管理工具:如何使用 Navicat for MySQL 导出导入数据表 Excel 文件?
Navicat Premium基本使用
Navicat Premium基本使用 Navicat是一套数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。Navicat 是以直觉化的图形用户界面而建的,可以安全和简单地创建、组织、访问并共用信息。 Navicat Premium 是 Navicat 的产品成员之一,能简单并快速地在各种数据库系统间传输数据,或传输一份指定 SQL 格式及编码的纯文本文件。其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、资料同步、备份、工作计划及更多。 本文介绍在Navicat Premium中进行简单的数据库管理。 在下载安装完 Navicat Premium 之后,进行以下操作。
zls365
2020/08/19
1.1K0
Navicat Premium基本使用
yyds,Navicat使用指南(上)
因为工作原因,需要经常连接不同的数据库,这里我安装的是Navicat Premium版本,在公众号后台回复 Navicat 即可获取。
SQL数据库开发
2024/04/25
1590
yyds,Navicat使用指南(上)
再见收费的Navicat,操作所有数据库就靠它了!
作为一名开发者,免不了要和数据库打交道,于是我们就需要一款顺手的数据库管理工具。很长一段时间里,Navicat 都是我的首选,但最近更换了一台新电脑,之前的绿色安装包找不到了。
沉默王二
2022/03/07
1.8K0
再见收费的Navicat,操作所有数据库就靠它了!
数据库导入sql文件_mysql导入sql文件命令
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
20.1K0
数据库导入sql文件_mysql导入sql文件命令
MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用
Navicat premium 是一款数据库管理工具。将此工具连接数据库,你可以从中看到各种数据库的详细信息。包括报错,等等。当然,你也可以通过他,登陆数据库,进行各种操作。Navicat Premium 是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。
白鹿第一帅
2021/03/02
2.3K0
MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用
测试使用navicat工具将MySQL格式SQL文件导入到MogDB数据库
当我们想把mysql格式的SQL文件导入到MogDB数据库时,我们可以借助navicat工具,先将SQL文件导入到mysql数据库中,再使用数据传输功能把SQL中的对象和数据直接导入到MogDB。或者使用数据传输功能将这些对象的定义和数据导出成PG格式的SQL语句,再导入到MogDB数据库中。
数据和云
2021/09/22
3.6K0
测试使用navicat工具将MySQL格式SQL文件导入到MogDB数据库
navicat导入sql文件报错_navicat怎么导入sql数据库文件
一、打开navicat,打开连接,右击连接名(如果新建连接,需要使用对应数据库的ip地址和密码,本机的是地址localhost,密码是自己mysql数据库的密码),选择新建数据库,数据库名要和想要导入的文件名一样(这种情况针对的是sql文件是直接由整个数据库导出的一个sql文件,如果表导出的sql文件,应该是随便命名数据库的名字,表名应该是和需要导入的文件名字相同(第二种情况没有亲自试过))。
全栈程序员站长
2022/11/09
4.7K0
navicat导入sql文件报错_navicat怎么导入sql数据库文件
Navicat使用指南(下)
这个是比较常见的功能,相比其他管理工具,Navicat将建表过程中所涉及的各种常用功能都包含进去了,包含新字段,索引,主键,外键,唯一键等等与表有关的内容,具体如下图:
SQL数据库开发
2024/04/25
2840
Navicat使用指南(下)
navicat连接mysql教程_navicat如何连接mysql?navicat 连接mysql Navicat使用教程
用Phpmyadmin导入导出数据受一定限制或服务商不配合提供mysql数据库的源文件,mysql数据库管理工具navicat for mysql,对于不怎么喜欢图形界面或者不太方便使用SQL的时候。我们可以通过用这个图形界面数据库管理工具来管理mysql,可以考虑使用第三方软件备份推荐使用Navicat for MySQL。
全栈程序员站长
2022/09/18
18.2K0
navicat连接mysql教程_navicat如何连接mysql?navicat 连接mysql Navicat使用教程
navicat premium使用教程详解_navicat premium怎么用
##Navicat Premium基本使用 Navicat是一套数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。Navicat 是以直觉化的图形用户界面而建的,可以安全和简单地创建、组织、访问并共用信息。 Navicat Premium 是 Navicat 的产品成员之一,能简单并快速地在各种数据库系统间传输数据,或传输一份指定 SQL 格式及编码的纯文本文件。其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、资料同步、备份、工作计划及更多。
全栈程序员站长
2022/09/23
2.1K0
navicat premium使用教程详解_navicat premium怎么用
Navicat数据库软件免费了!推出Navicat Premium Lite:支持MySQL、Redis等
数据库管理工具领域的知名品牌Navicat,推出其免费版本——Navicat Premium Lite,用户可从Navicat官网下载体验这款软件。
零云
2024/06/27
2.2K0
Navicat数据库软件免费了!推出Navicat Premium Lite:支持MySQL、Redis等
Navicat的详细教程{收藏}
Navicat 是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
框架师
2019/09/19
5.7K0
Navicat的详细教程{收藏}
使用MYSQL命令直接导入导出SQL文件
很多时候,我们的数据开发都会用到很多开发利器,比如powerdesigner, navicat等这些软件,虽然好用,但是要收费,在公司里面是禁止使用盗版软件的,怕罚款各方面的,所以我们也不敢直接在公司的机子上装破解版,这个时候,如果我们要导入或者导出sql语句怎么办,虽然也有免费的软件如mysql-workbench的存在,但是不好用啊,操作复杂麻烦,要说好处吧,个人觉得就是记住密码和ip地址用户名这些方便咯,当然实际上它还是很强大的。
拓荒者
2019/03/15
9.5K0
使用MYSQL命令直接导入导出SQL文件
【每晚玩转一套ssm项目】厨艺交流平台网站
本文章教程手把手带你玩转ssm项目,曾经博主也是小白经过数个日夜终于将ssm玩透彻了。现在博主免费推出了【每晚玩转一套ssm项目】这一系列专栏,带你手把手上手ssm。请大家关注并监督我每晚更新哦~这个过程我也会从新人的角度总结出易错点并写道文章的最后。博主也是一枚在校大学生,现在带学弟学妹们入门ssm项目。在此之前你需要一定的计算机操作基础,现在我将带你,不需要写一行代码,从0到1搭建一个项目。
菜菜有点菜
2025/01/14
1280
【每晚玩转一套ssm项目】厨艺交流平台网站
Navicat Premium 15永久使用,安装教程,快捷键.md
在当今信息化的时代,数据库已经成为了生活和工作中不可或缺的一部分。而Navicat作为一款功能强大的数据库管理工具,深受广大开发者和数据库管理员的喜爱。最新版的Navicat Premium 15 已经发布了,但是是收费的,可以免费试用14天,为了享受永远试用,特作研究,本文只做研究探讨,支持购买正版。同时为大家介绍一些Navicat Premium 15中常用的快捷键,帮助你提升数据库管理的效率。
木头左
2024/06/12
5310
MySQL数据库界面化工具 - Navicat
本文使用的工具版本为:Navicat Premium 15,文中提到的功能在旧版中同样支持,如果需要最新版的软件(Mac/Windows)可私信博主。
一头小山猪
2020/05/19
6.4K0
MySQL数据库界面化工具 - Navicat
推荐阅读
相关推荐
使用了这个数据库神器,让我工作效率提升了数倍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档