藍橋杯 基礎 矩陣乘法

題目

  基礎練習 矩陣乘法  
時間限制: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
矩陣的0次冪爲單位矩陣(⊙﹏⊙)

弱弱的·代碼:

#include<iostream>
#include<cstring>
int a[100][100],b[100][100],c[100][100],m;
using namespace std;
void jisuan(int x1,int y1)
{
    for(int l=0;l<m;l++)
    {
         c[x1][y1]+=b[x1][l]*a[l][y1];
    }
}
int main()
{
    int n,i,j;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    cin>>m>>n;
        for(i=0;i<m;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>a[i][j];
            b[i][j]=a[i][j];
        }
    }
    if(n==0)
    {
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            {
                if(i==j)
                    cout<<1<<" ";
                    else
                    cout<<0<<" ";
            }
            cout<<endl;
        }

    }
    else{
    for(i=1;i<n;i++)
    {
        for(int x=0;x<=m;x++)
        {
            for(int y=0;y<=m;y++)
            {
                jisuan(x,y);
            }
        }
         if(i<n-1)
         {
        for(int h=0;h<m;h++)
        {
            for(int r=0;r<m;r++)
            {
                b[h][r]=c[h][r];
                c[h][r]=0;
            }
        }
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
            cout<<c[i][j]<<" ";
             cout<<endl;
    }
    }


    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章