블루 브릿지 컵 기본적인 훈련 행렬 곱셈의 VIP 질문 - JAVA
주어진 N 번째의 순서는 A, A, M 출력 전력 (M은 음이 아닌 정수) 행렬들
: 예를 들어,
A =를
1 2.
3. 4.
2의 거듭 제곱
. 7 10
15 22은
입력
첫번째 라인은 N, M (1 <= N 정수 포지티브 인 <= 30, 0 <= M <= 5), 상기 행렬 A의 순서의 전력 요구 나타내고
, 다음 N 개의 행을 각각의 행 절대 N을 설명 행렬의 음이 아닌 정수 값이 10을 초과하지 않는 값
출력
N 정수의 전체 출력 라인 N, M은 대응 행렬 A의 전력을 나타낸다. 인접 숫자 사이의 공간으로 구분
입력 샘플
2
. 1 2
. 3 (4)
샘플 출력
. 7 10
15 22은
PS : 행렬 곱셈 화학식 :
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[][] juZhenArr = new int[N][N];
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
juZhenArr[i][j] = sc.nextInt();
}
}
//M大于1的情况,按乘法计算
if(M >= 1) {
int[][] juZhenArr_Copy = juZhenArr;
for(int i = 1; i < M; i++) {
int[][] result = new int[N][N];
for(int j = 0; j < N; j++) {
for(int k = 0; k < N; k++) {
int count = 0;
int temp = 0;
while(count < N) {
//相乘求值
temp += juZhenArr[j][count] * juZhenArr_Copy[count][k];
count++;
}
result[j][k] = temp;
}
}
juZhenArr = result;
}
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
System.out.print(juZhenArr[i][j] + " ");
}
}
}else{
//M等于1,输出本身即可
if(M == 1){
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
System.out.print(juZhenArr[i][j] + " ");
}
}
//M等于0的情况:输出单位矩阵
}else if(M == 0){
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(i == j) {
System.out.print(1 + " ");
}else {
System.out.print(0 + " ");
}
}
}
}
}
}
}