Examen preguntas ejercicios básicos multiplicación matricial

1. Título

Enlace del título
  http://lx.lanqiao.cn/problem.page?gpid=T58
Descripción del problema
  Dada una matriz de orden N A, la salida A a la potencia de M (M es un entero no negativo)
  Por ejemplo:
  A =
  1 2
  3 4
  A a la potencia de 2
  7 10
  15 22
Formato de entrada
  La primera fila es un entero positivo N, M (1 <= N <= 30, 0 <= M <= 5), que indica el orden de la matriz A y la potencia requerida. Las
  siguientes N filas, N valores absolutos por fila Entero no negativo no superior a 10, que describe el valor de la matriz A
Formato de salida
  Se emite un total de N filas, con N enteros en cada fila, que representan la matriz correspondiente a la potencia M-ésima de A. Los números adyacentes están separados por un espacio.
Entrada de muestra
2 2
1 2
3 4
Salida de muestra
7 10
15 22

2. Resolver

Idea: utilice tres matrices, la matriz c es la matriz resultante, una matriz es la matriz original y la matriz b es la matriz c que almacena temporalmente los datos de cálculo actuales. Para c [i] [j] + = c [i] [h] * c [h] [j] (h de 1 a n)

1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6  usando el espacio de nombres std;
 7  int a [35] [35], b [35] [ 35], c [35] [35]; // La matriz b es inicialmente una matriz de identidad 
8  int N, M;
 9  
10  void Myprint ( int b [] [35]) { // El valor de matriz de salida 
11      para ( int i = 1; i <= N; i ++ ) {
 12          para ( int j = 1; j <= N; j ++ ) {
 13              si(j! = N) cout << b [i] [j] << "" ;
14              más cout << b [i] [j] << endl;
15          }
 16      } 
 17  }
 18  nulo Diversión ( int b [] [35], int c [] [35]) { // 将 b 数组 的 值 赋给 c 数组
19      para ( int i = 1; i <= N ; i ++ ) {
 20          para ( int j = 1; j <= N; j ++ ) {
 21              c [i] [j] = b [i] [j];
22          }
 23      }
 24  }
 25  int main () {
 26     cin >> N >> M;
 27      
28      para ( int i = 1; i <= N; i ++ ) {
 29          para ( int j = 1; j <= N; j ++ ) {
 30              cin >> a [i] [ j];
 31              c [i] [j] = a [i] [j]; // una matriz y una matriz c son matriz A 
32              si (i == j) b [i] [j] = 1; // b array es la matriz de identidad 
33              más b [i] [j] = 0 ;
 34          }
 35      }
 36      if (M == 0) Myprint (b); // salida de la matriz de identidad 
37      else  if (M == 1 ) Myprint ( a);
38      else {
 39      for ( int t = 2; t <= M; t ++) { // Mth power 
 40          // Nota: Para cada resultado de cálculo de una matriz y una matriz c, la matriz b se almacena primero, porque si se usa c Almacenamiento de matriz, el cálculo se combinará, haciendo que el resultado sea incorrecto 
41          para ( int i = 1; i <= N; i ++ ) {
 42              para ( int j = 1; j <= N; j ++ ) {
 43                  para ( int h = 1; h <= N; h ++ ) {
 44                      if (h == 1) b [i] [j] = c [i] [h] * a [h] [j];
 45                      más b [i] [ j] + = c [i] [h] * a [h] [j];
 46                  }
 47              }
 48         }
 49          Fun (b, c); // Asigna el valor de la matriz b a la matriz 
50 50      }
 51      Myprint (c);
 52      } 
 53      devuelve 0 ; 
 54 }

 

 
 

Supongo que te gusta

Origin www.cnblogs.com/Aiahtwo/p/12729352.html
Recomendado
Clasificación