有什么比一次AC更快乐的事呢?作为今年寒假刚刚学习编程的大菜鸟,我的天,我竟然一次AC了。不过这个代码花的时间很多,刚好是限制时间1秒。需要优化。不过代码长度比其他的代码短一点。
问题描述 输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2 3 21 0 -11 1 -30 31 23 1样例输出-3 2-8 2提示矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);int m = input.nextInt();int n = input.nextInt();int k = input.nextInt();int a[][] = new int[m][n];int b[][] = new int[n][k];int c[][] = new int[m][k];for(int i=0;i<m;i++){for(int j=0;j<n;j++){a[i][j] = input.nextInt();}}for(int j=0;j<n;j++){for(int r=0;r<k;r++){b[j][r] = input.nextInt();}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){for(int r=0;r<k;r++){c[i][r]+=a[i][j]*b[j][r];}}}for(int i=0;i<m;i++){for(int r=0;r<k;r++){System.out.PRint(c[i][r]+" ");}System.out.println();}} }写完看了别人的代码,发现这个代码,用时比较短,可能是因为少了一个for循环吧。仔细看了看,厉害了我的哥!!新闻热点
疑难解答