给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。
Input
第1行:1个数N,表示矩阵的大小(2 <= N <= 100)
第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1ii <= 1000)
第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2ii <= 1000)
Output
输出共N行,每行N个数,对应M1 * M2的结果的一行。
Sample Input
2
1 0
0 1
0 1
1 0
Sample Output
0 1
1 0
以前写过,不过是c++代码,详细的算法
https://blog.csdn.net/lioncatch/article/details/80659686
在此附上java代码
import java.util.Scanner;
public class Main
{
public static void main(String []ages)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int arr1[][]=new int [n][n];
int arr2[][]=new int [n][n];
int arr3[][]=new int [n][n];
for(int x=0;x<n;x++)
for(int i=0;i<n;i++)
{
arr1[x][i]=sc.nextInt();
}
for(int x=0;x<n;x++)
for(int i=0;i<n;i++)
{
arr2[x][i]=sc.nextInt();
}
for(int x=0;x<n;x++)//行
for(int i=0;i<n;i++)//列
{
if(arr1[i][x]!=0)//检索第一竖列,如果有
{
for(int y=0;y<n;y++)///循环检索arr2里面的第x行
{
if(arr2[x][y]!=0)///如果有,赋值。。。
{
arr3[i][y]+=arr1[i][x]*arr2[x][y];
}
}
}
}
for(int x=0;x<n;x++)
{
for(int i=0;i<n;i++)
{
if(i==n-1)
System.out.print(arr3[x][i]);
else
System.out.print(arr3[x][i]+" ");
}
System.out.println();
}
}
}