精华内容
下载资源
问答
  • Java 算法 矩阵乘法
    2022-02-02 15:06:18

    题目描述

    输入两个矩阵,分别是ms,sn大小。输出两个矩阵相乘的结果。

    输入
    输入描述:
      第一行,空格隔开的三个正整数m,s,n(均不超过200)。
      接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
      接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。
    输入样例:
    2 3 2
    1 0 -1
    1 1 -3
    0 3
    1 2
    3 1

    输出

    输出描述:
      m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。
    输出样例:
    -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 +01+(-1)*3=-3

    HINT:时间限制:1.0s 内存限制:512.0MB

    解题思路

    就按照矩阵的乘法规则进行计算就行了,一个矩阵的行乘以一个矩阵的列之后的和。

    代码

    import java.util.Scanner;
    
    public class Main {
        static int k=0;
        static int x=0;
        static int y=0;
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            int m=scanner.nextInt();
            int s=scanner.nextInt();
            int n=scanner.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]=scanner.nextInt();
                }
            }
            for (int i=0;i<s;i++){
                for (int j=0;j<n;j++){
                    b[i][j]=scanner.nextInt();
                }
            }
            for (int i=0;i<m;i++){
                for (int q=0;q<n;q++){
                    for (int j=0;j<s;j++){
                        k=a[i][j]*b[j][y];			//第一个矩阵的行乘以第二个矩阵的列
                        x+=k;						//之后相加得到对应的值
                    }
                    y++;							//第二个矩阵的列累加
                    if (y==n){
                        y=0;
                    }
                    c[i][q]=x;						//填入对应的数
                    x=0;
                }
            }
            for (int i=0;i<m;i++){
                for (int j=0;j<n;j++){
                    System.out.print(c[i][j]+" ");//输出
                }
                System.out.println();
            }
        }
    }
    
    更多相关内容
  • Java矩阵乘法

    2021-01-07 14:20:10
    输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。 package com.company; import java.util.Arrays; import java.util.Random; import java.util.Scanner; /** * @Author:gaoyuan * @...

    输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。

    package com.company;
    
    import java.util.Arrays;
    import java.util.Random;
    import java.util.Scanner;
    
    /**
     * @Author:gaoyuan
     * @Description:矩阵乘积
     * @DateTime:2021/1/6 22:38
     **/
    public class MatrixMultip {
        public static void main(String[] args) {
            /***定义并随机初始化数组ints*/
            System.out.println("定义并输入矩阵的m和n:");
            Scanner sc = new Scanner(System.in);
            int m = sc.nextInt();
            int n = sc.nextInt();
    
            int[][] ints = init(n, m);//调用初始化方法初始数组ints
            System.out.println(Arrays.deepToString(ints));
            System.out.println("\n");
            /************定义并随机初始化数组ints2**************/
            System.out.println("定义并输入第二个矩阵的列p:");
            int p = sc.nextInt();
    
            int[][] ints2 = init(n,p);//调用初始化方法初始数组ints2
            System.out.println(Arrays.deepToString(ints2));
            System.out.println("\n");
            int[][] z = matrixMultiplication(ints, ints2);
    
            System.out.println("输出乘法后的矩阵");
            System.out.println(Arrays.deepToString(z));
        }
    
        public static int[][] init(int n,int m){//
            Random random=new Random();//初始化随机变量
            int[][] arr=new int[n][m];
    
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    arr[i][j]=random.nextInt(10);//随机数范围0-10
                }
            }
            return arr;
        }
    
        public static int[][] matrixMultiplication(int[][] first, int[][] second) {
            int m = first.length;//第一个矩阵的行长度
            int n = first[0].length;//第一个矩阵的列长度,第二个矩阵的行长度
            int p = second[0].length;//第二个矩阵的列长度
            int[][] result = new int[m][p];
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < p; j++) {
                    for (int k = 0; k < n; k++) {
                        result[i][j] = result[i][j] + first[i][k] * second[k][j];
                    }
                }
            }
            return result;
        }
    }
    
    展开全文
  • java矩阵乘法

    2021-04-01 20:06:27
    试题 基础练习 矩阵乘法 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)  例如:  A =  1 2  3 4  A的2次幂  7 10  15 22 输入格式  第一行是一个正...

    试题 基础练习 矩阵乘法

    资源限制
    时间限制:1.0s 内存限制:512.0MB
    问题描述
      给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
      例如:
      A =
      1 2
      3 4
      A的2次幂
      7 10
      15 22
    输入格式
      第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数
      接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值
    输出格式
      输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
    样例输入
    2 2
    1 2
    3 4
    样例输出
    7 10
    15 22

    import java.util.Scanner;
    public class 矩阵乘法 {
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt(),m=in.nextInt();
    		int d[][] = new int[n+1][n+1];
    		for(int i=1;i<=n;i++) {
    			for(int j=1;j<=n;j++) {
    				d[i][j]=in.nextInt();
    			}
    		}
    		int dp1[][] =d;
    		if(m==0) {
    			for(int i=1;i<=n;i++) {
    				for(int j=1;j<=n;j++) {
    					if(i==j)d[i][j]=1;
    					else d[i][j]=0;
    				}
    			}
    			for(int i=1;i<=n;i++) {
    				for(int j=1;j<=n;j++) {
    					System.out.print(d[i][j]+" ");
    				}
    				System.out.println();
    			}
    		}
    		else f(d,dp1,0,n,m);
    	}
    	private static void f(int[][] d, int[][] dp1, int cur,int n, int m) {
    		//d不变的原数组,dp1动态规划,cur判断幂次够不够
    		if(cur>=m-1) {
    			for(int i=1;i<=n;i++) {
    				for(int j=1;j<=n;j++) {
    					System.out.print(dp1[i][j]+" ");
    				}
    				System.out.println();
    			}
    			return;
    		}
    		int dp2[][] = new int[n+1][n+1];
    		for(int i=1;i<=n;i++) {
    			for(int j=1;j<=n;j++) {
    				for(int k=1;k<=n;k++) {
    					dp2[i][j]+=d[i][k]*dp1[k][j];
    				}
    			}
    		}
    		f(d,dp2,cur+1,n,m);
    	}
    }
    

    感谢关注,点赞一键三连哦!!

    展开全文
  • 分别使用串行、并行方法计算矩阵乘法,对比两者的执行时间
  • 主要介绍了Java实现的矩阵乘法,简单描述了矩阵乘法的原理,并结合实例形式分析了java实现矩阵乘法的相关操作技巧,需要的朋友可以参考下
  • java矩阵乘法算法

    2019-02-04 00:28:25
    * 矩阵乘法流程是第一个矩阵的每一行与第二个矩阵的每一列中的数相乘并相加得到最终结果矩阵 * 那么就需要分三个循环来完成 * 第一个循环控制第一个矩阵的行数 * 第二个循环控制第二个矩阵的列数 * 第三个循环...
    public class MatrixDot {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		double[][] matrix1 =
    			{{1},
    			{2},
    			{3}};
    		double[][] matrix2 = 
    			{{1,2,3}};
    		double[][] matrix1_2 = dot(matrix1,matrix2);
    		double[][] matrix3 =
    			{{1,2,3},
    			{1,2,3}};
    		double[][] matrix4 =
    			{{1,2},
    			{1,2},
    			{1,2}};
    		double[][] matrix3_4 = dot(matrix3,matrix4);
    		System.out.println("----------matrix1 * matrix2 结果----------");
    		printMatrix(matrix1_2);
    		System.out.println("----------matrix3 * matrix4 结果----------");
    		printMatrix(matrix3_4);
    	}
    	
    	public static double[][] dot(double[][] matrix1,double[][] matrix2){
    		if (matrix1[0].length != matrix2.length) {
    			System.out.println("矩阵格式不正确");
                return null;
    		}
    		/*
    		 *         1
    		 * 1 2 3 * 2 = 14  (1*3  3*1  --> 1*1)
    		 *         3
    		 * 
    		 *         1 1
    		 * 1 2 3 * 2 2 = 14 14   (1*3  3*2  --> 1*2)
    		 *         3 3
    		 *         
    		 *         1   
    		 * 1 2 3 * 2 = 14    (2*3  3*1  --> 2*1)
    		 * 1 2 3   3   14
    		 * 
    		 * 可以看出,矩阵乘法的结果的行和列是由第一个矩阵的行数和第二个矩阵的列数决定的
    		 * 因此构建最终结果时二维数组的第一个长度(也就是矩阵的行数)应该等于第一个参数矩阵的行数
    		 * 第二个长度(也就是矩阵的列数)应该等于第二个参数矩阵的列数
    		 */
            double result[][] = new double[matrix1.length][matrix2[0].length];
            /*
             * 矩阵乘法流程是第一个矩阵的每一行与第二个矩阵的每一列中的数相乘并相加得到最终结果矩阵
             * 那么就需要分三个循环来完成
             * 第一个循环控制第一个矩阵的行数
             * 第二个循环控制第二个矩阵的列数
             * 第三个循环控制相乘后相加的次数
             */
            for (int i = 0; i < matrix1.length; i++)//控制行数
                for (int j = 0; j < matrix2[0].length; j++)//控制列数
                    for (int k = 0; k < matrix2.length; k++)//控制次数
                    	result[i][j] += matrix1[i][k] * matrix2[k][j];
            return result;
    	}
    	
    	public static void printMatrix(double[][] matrix) {
    		for(int i=0;i<matrix.length;i++) {
    			for(int j=0;j<matrix[0].length;j++) {
    				System.out.print(matrix[i][j]+" ");
    			}
    			System.out.println();
    		}	
    	}
    
    }

    计算结果如下:

    展开全文
  • 主要介绍了java 矩阵乘法的mapreduce程序实现的相关资料,需要的朋友可以参考下
  • matrix-multiplication:Java矩阵乘法
  • 矩阵乘法java实现

    2012-09-20 09:29:18
    矩阵乘法java实现,希望对大家有用。
  • 传统的矩阵乘法实现首先,两个矩阵能够相乘,必须满足一个前提:前一个矩阵的行数等于后一个矩阵的列数。第一个矩阵的第m行和第二个矩阵的第n列的乘积和即为乘积矩阵第m行第n列的值,可用如下图像表示这个过程。矩阵...
  • 矩阵乘法Java实现

    千次阅读 2021-02-18 15:37:15
    本文介绍几种方式实现矩阵相乘。矩阵概念一般语言没有提供,我们首先子句实现,同时也介绍一些现成库实现。...2. 矩阵乘法实现 2.1 自己实现 首先我们自己实现矩阵相乘,为了简单我们使用二维double类型
  • java 矩阵乘法

    2020-03-26 18:04:05
    编写一程序,计算矩阵A={{7,9,4},{5,6,8}}与矩阵B={{9,5,2,8},{5,9,7,2},{4,7,5,8}}相乘,把结果存入矩阵C,并在屏幕输出结果。 package com.demo; /** * * 作者 @阿鑫 * * 2020年3月23日,下午6:35:02 */ ...
  • 想了解使用java写的矩阵乘法实例(Strassen算法)的相关内容吗,Jack_Weng在本文为您仔细讲解java矩阵乘法(Strassen算法)的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java矩阵乘法,java矩阵,两矩阵相乘...
  •  小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容。  当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的。  小明希望你来帮他完成这个任务。 ...
  • java 矩阵乘法基础

    2019-07-24 16:11:10
    MatrixMultiply 如何使用详情见下图百度百科的链接 ... package cha3; public class MatrixMultiply { public static void main(String[]...
  • Java实现矩阵乘法及优化方法传统的矩阵乘法实现优化方法(Strassen算法) 传统的矩阵乘法实现   首先,两个矩阵能够相乘,必须满足一个前提:前一个矩阵的行数等于后一个矩阵的列数
  • java 二维数组矩阵乘法的实现方法,需要的朋友可以参考一下
  • Java程序实现矩阵乘法

    万次阅读 2017-08-19 22:26:55
    Java程序实现矩阵乘法
  • JAVA蓝桥杯矩阵乘法

    千次阅读 2017-03-02 16:25:26
     给定一个N阶矩阵A,输出A的M次幂(M是非负整数)  例如:  A =  1 2  3 4  A的2次幂  7 10  15 22 输入格式  第一行是一个正整数N、M(1  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 ...
  • Java 和 Scala 中的一些旧的稀疏矩阵乘法内容。 Java 在我们比较的 C(或者是 C++)基准测试中表现良好。 Scala 版本需要工作,我在对集合库没有牢牢把握的时候写的; 它可以大大改进。 去做 并行版本测试 使 Scala ...
  • Java学习之矩阵乘法

    2021-03-14 10:33:29
    我们知道,第一行第一列的数=1x0+1x1=1,以此类推即可完成矩阵乘法的计算。我们就用上面这个题目作为案例进行编码。 二、案例效果图: 三、案例代码: public class Juzhenchengfa { public static void main(Str
  • Stressen矩阵乘法 思想是: 减少乘法的次数 由八次变为7次 要多做加法和减法 import java.util.Scanner; public class Strassen矩阵乘法 { public static void main(String[] args) { // TODO Auto-generated ...
  • 矩阵乘法java实现)

    万次阅读 多人点赞 2018-04-14 21:25:37
    矩阵的运算中经常要用到矩阵乘法,通常情况下矩阵乘法用计算机高级语言来实现有三种办法。 第一种是最普通的,最容易想到的办法,即用三个for循坏来实现。它的时间复杂度为O(n^3)。具体实现如下。public class...
  • 矩阵乘法java实现

    千次阅读 2018-02-01 13:43:39
    矩阵算法小练. import java.util.Scanner;...//矩阵乘法运算 public class Matrix { public double[][] datas;//数据元素 public int rows;//行数 public int cols;//列数 public Matrix(int r, int c){ datas =

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,984
精华内容 3,993
关键字:

java 矩阵乘法

java 订阅
友情链接: templete-match.rar