文章

40

粉丝

0

获赞

56

访问

8.9k

头像
矩阵幂 题解:80%正确率-看过来
P1384 北京邮电大学
发布于2025年8月26日 19:01
阅读数 29

#include<bits/stdc++.h>
using namespace std;

// 两个n*n的矩阵相乘 
void Cheng(long long num1[20][20],long long num2[20][20],int n){
	int l=0,p3=0; //l表示第一个矩阵的行 
	long long num3[1000];
	while(l<n){
		int p=0;
		while(p<n){
			long long sum=0;
			// m表示第一个矩阵的列
			for(int m=0;m<n;m++){
				sum=sum+num1[l][m]*num2[m][p];
			}
			num3[p3]=sum;
			p3++;
			p++;
		}
		l++;
	}
	int r=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			num1[i][j]=num3[r];
			r++;
		}
	}
}

int main(){
	int n,k;
	while(cin>>n>>k){
		long long num[20][20],sum[20][20];
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				cin>>num[i][j];
				sum[i][j]=num[i][j];
			}
		}
		
		for(int i=0;i<k-1;i++){
			Cheng(sum,num,n);
		}
	
		for(int i=0;i<n;i++){
		    for(int j=0;j<n;j++){
		        cout << sum[i][j];
		        if(j != n-1) cout << " "; // 只有在不是最后一个数时才输出空格
		    }
		    cout << "\n";
		}

...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发