基础练习-矩阵乘法


title: 基础练习 矩阵乘法
categories:

  • ACM
  • 矩阵乘法
    tags:
  • 妙用下标和
    date: 2020-03-14 16:27:26

整数的乘法初始化为1,矩阵的乘法初始化为大小相同单位矩阵(只有对角线全是1)。必须由第三个变量保存结果。for循环不仅控制次数还控制积和被乘数每次的变换。

问题

试题 基础练习 矩阵乘法

提交此题

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

给定一个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

算法

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;

int main(){	
//freopen("input.txt", "r", stdin);
	int juzhen[30][30],jieguo[2][30][30],nn=0;
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>juzhen[i][j];
			jieguo[0][i][j]=i==j?1:0;
		}
	}
	for(int i=0;i<m;i++)
	{
		nn=i&1?0:1;
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				int sum=0;
				for(int l=0;l<n;l++)
				{
						sum+=jieguo[1-nn][j][l]*juzhen[l][k];
				}
				jieguo[nn][j][k]=sum;
			}
		}	
	}
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
				cout<<jieguo[nn][j][k]<<" ";
				cout<<endl;
			}
}
发布了43 篇原创文章 · 获赞 1 · 访问量 918

猜你喜欢

转载自blog.csdn.net/qq_43985303/article/details/104865563