zoukankan      html  css  js  c++  java
  • 22-

                  算法训练 矩阵乘法  
    时间限制:1.0s   内存限制:512.0MB
        
    问题描述
      输入两个矩阵,分别是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 2
    1 0 -1
    1 1 -3
    0 3
    1 2
    3 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=-3
     
    注意:多写个输出的二重循环就超时了!!!
     
    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner cin = new Scanner(System.in);
    		int m, s, n;
    		m = cin.nextInt();
    		s = cin.nextInt();
    		n = cin.nextInt();
    		int[][] a = new int[m][s];
    		int[][] b = new int[s][n];
    		int[][] c = new int[m][n];
    		
    		for(int i = 0; i < m; i++) {
    			for(int j = 0; j < s; j++) {
    				a[i][j] = cin.nextInt();
    			}
    		}
    		for(int i = 0; i < s; i++) {
    			for(int j = 0; j < n; j++) {
    				b[i][j] = cin.nextInt();
    			}
    		}
    		for(int i = 0; i < m; i++) {
    			for(int j = 0; j < n; j++) {
    				int sum = 0;
    				for(int k = 0; k < s; k++) {
    					sum += a[i][k] * b[k][j];
    				}
    //				c[i][j] = sum;
    				System.out.print(sum + " ");
    			}
    			System.out.println();
    		}
    //		for(int i = 0; i < m; i++) {    //注意整合到上面一起输出,否则多用个输出都超时了!!!
    //			for(int j = 0; j < n; j++) {
    //				System.out.print(c[i][j] + " ");
    //			}
    //			System.out.println();
    //		}
    	}
    
    }
    

      

  • 相关阅读:
    iOS 学习
    swift
    (九)Javabean与Jsp(来自那些年的笔记)
    (八)JSP 技术知识点总结(来自那些年的笔记)
    java抽象工厂模式
    java工厂方法模式
    java的简单工厂模式
    服务提供者框架讲解 之 myJDBC
    第一条:考虑用静态工厂方法代替构造器
    另辟蹊径的归并排序复杂度分析
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10422247.html
Copyright © 2011-2022 走看看