基本的な演習 - マトリックス乗算


タイトル:基本的なトレーニング行列乗算
カテゴリ:

  • ACM
  • 行列の乗算の
    タグ:
  • 魔法のマークと下の
    日付:2020年3月14日午後四時27分26秒

1を乗算整数初期化され、乗算行列は同じ単位行列のサイズを初期化する(だけ対角線全て1です)。これは、3番目の変数の結果によって保持されなければなりません。さらに制御ループだけでなく、変換生成物及び各被乗数の数を制御するため。

問題

基本的なトレーニング行列乗算の質問

この質問を提出することにより、

リソースの制約

制限時間:メモリ制限が1.0S:512.0メガバイト

問題の説明

与えられたN番目の順番がA、A、M個の出力パワー(Mは負でない整数である)行列
  :例えば、
  A =を
  1 2
  3 4。
  パワーの2 A
  7 10
  15 22であります

入力形式

最初の行は、N、M(1 <= Nの整数正である <= 30、0 <= M <= 5)、 及び行列Aのオーダーのパワーを表す必要
  Nの絶対値の次のNラインをもう10非負整数より、行列の値は、説明しません

出力フォーマット

N個の整数の合計N個の出力線、Mは、対応する行列Aのパワーを表します。隣接する数字の間にスペースで区切っ

サンプル入力

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