矩陣乘法


問題描述
  給定一個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<stdio.h>

int a[30][30];
int b[30][30]={{0},{0}};
int c[30][30];

int MarixInput(int N){
    int i,j;

    for(i = 0;i < N; i++)
        for(j =0; j < N; j++){
            scanf("%d",&a[i][j]);
        }

    for(i = 0; i < N;i++)
        for(j = 0;j < N;j ++)
            b[i][i] = 1;

        return 0;
}

int MarixArrary(int N,int M){
    int i,j,k,s;
    for(s = 0; s < M; s++){
        for(i = 0; i < N; i++){
            for(j = 0; j< N ; j++){
                c[i][j] = 0;
                for(k = 0; k < N; k++)
                    c[i][j] += a[i][k]*b[k][j];

        }
      }
        for(i = 0; i < N;i++){
            for(j = 0; j < N; j++)
                b[i][j] = c[i][j];
    }
    }
    return 0;
}

void MarixOutput( int N){
    int i,j;

    for(i = 0;i < N ; i++){
        for(j = 0; j < N ; j++){
            printf("%d ",b[i][j]);
        }
        printf("\r\n");
    }
}

int main(){
    int N,M;

    scanf("%d%d",&N,&M);
    MarixInput(N);
    MarixArrary(N,M);
    MarixOutput(N);
    return 0;
}



發佈了35 篇原創文章 · 獲贊 18 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章