蓝桥杯【JAVA】—— 矩阵乘法
程序员文章站
2022-07-03 19:47:51
...
1、题目:
2、程序代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner get=new Scanner(System.in);
int m=get.nextInt();//A(m,s)
int s=get.nextInt();//B(s,n)
int n=get.nextInt();
int ms[][]=new int[m][s];
int sn[][]=new int[s][n];
int mn[][]=new int[m][n];
for(int i=0;i<m;i++) {
for(int j=0;j<s;j++) {
ms[i][j]=get.nextInt();
}
}
for(int i=0;i<s;i++) {
for(int j=0;j<n;j++) {
sn[i][j]=get.nextInt();
}
}
get.close();
// for(int i=0;i<s;i++) {//mn数组为2行2列的一个参考
// mn[0][0]+=ms[0][i]*sn[i][0];
// mn[0][1]+=ms[0][i]*sn[i][1];
// mn[1][0]+=ms[1][i]*sn[i][0];
// mn[1][1]+=ms[1][i]*sn[i][1];
// }
int i=0;
while(i<m) {
for(int j=0;j<n;j++) {
for(int k=0;k<s;k++) {
mn[i][j]+=ms[i][k]*sn[k][j];
}
System.out.print(mn[i][j]);
if(j!=n-1)
System.out.print(" ");
}
System.out.println();
i++;
}
}
}
上述写法虽然能够运行,在eclipse能够成功通过,但是在蓝桥杯官网上会出现运行超时的问题,所以下面提供一个可以通过运行达到满分的示例——
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int m=input.nextInt();
int s=input.nextInt();
int n=input.nextInt();
int[][] a=new int[m+1][s+1];
int[][] b=new int[s+1][n+1];
int[][] c=new int[m+1][n+1];
int i,j,k;
for(i=1;i<=m;i++)
for(j=1;j<=s;j++)
a[i][j]=input.nextInt();
for(i=1;i<=s;i++)
for(j=1;j<=n;j++)
b[i][j]=input.nextInt();
for(k=1;k<=s;k++)
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
c[i][j]+=a[i][k]*b[k][j];
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
System.out.print(c[i][j]);
if(j!=n)
System.out.print(" ");
}
System.out.println();
}
}
}
上一篇: android 获取经纬度(百度地图)