`
xifangyuhui
  • 浏览: 185824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个矩阵的乘积的java实现

阅读更多

题目:

计算两个矩阵 A、B 的乘积矩阵 C。     

矩阵 A={1,2,3,4,5,6};矩阵 B={7,8,9,10,11,12}。
两个矩阵的乘积仍然是矩阵。若 A 矩阵有m行p列,B 矩阵有p行n列,则它们的乘积 C 矩阵有m 行n 列。                 

 C=A*B 的算法:  Cij=  (i=0,1,……,m-1;j=0,1,……,n-1)
设 A、B、C 矩阵用 3 个 2 维数组表示:a 数组有 3 行 2 列,b 数组有 2 行 3 列,则 c 数组有 3 行 3 列。
如:
c[0][0]=  a[0][0]*b[0][0]+a[0][1]*b[1][0];
c[1][0]=  a[1][0]*b[0][1]+a[1][1]*b[1][1];

 

 

public class ArrayMult {

	public static void main(String[] args) {
		int[][] a = {{1,2},{3,4},{5,6}};
		int[][] b = {{1,2,3},{4,5,6}};
		//m表示数组a的行数,n表示数组b的列数,s表示数组a的列数和数组b的行数
		int m = a.length, n = b[0].length, s1 = a[0].length, s2 = b.length;
		//判断两个数组是否能够相乘求积
		if(s1 != s2) {
			System.out.println("数组不能相乘,数组a的列数不等于数组b的行数");
			return;
		}
		//动态创建数组c用来保存结果
		int[][] c = new int[m][n];
		for(int i=0; i<m; i++)   //i表示数组c的每一行
			for(int j=0; j<n; j++) {  //j表示数组c的每一列
				int temp = 0;
				for(int k=0; k<s1; k++) //k表示数组a的列号和数组b的行号
					temp+=a[i][k]*b[k][j];
				c[i][j] = temp;
			}
		print(a);
		print(b);
		print(c);
	}
	
	private static void print(int[][] c) {
		int m = c.length;
		int n = c[0].length;
		for(int i=0; i<m; i++) {
			for(int j=0; j<n; j++) {
				if(c[i][j]<10)
					System.out.print(" ");
				System.out.print(c[i][j] + " ");
			}
		System.out.println();
		}
		System.out.println("--------------------------------------");
	}
}

 

0
0
分享到:
评论

相关推荐

    Java多线程技术实现矩阵乘积计算

    适合初学者使用,Java多线程技术实现矩阵乘积计算

    Java实现 稀疏矩阵乘积

    请计算两个矩阵的乘积C = A × B并且输出C中所有非0的元素。 输入 第一行包含三个整数N, P, Q 以下P行每行三个整数i, j, k表示A矩阵的一个非0元素:Aij = k 以下Q行每行三个整数i, j, k表示B矩阵的一个非0元素:Bij ...

    编写代表矩阵的Matrix类

    设置某元素值的方法setData(int row,int col,double value),计算两个矩阵的乘积的方法multiply(Matrix m)以及toString()等内容。 编写测试类MatrixTest,并在该类中创建两个矩阵对象,计算其乘积.

    Java实现 LeetCode 598 范围求和 II(最小值相乘)

    操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 &lt;= i &lt; a 以及 0 &lt;= j &lt; b 的元素 M[i][j] 的值都增加 1。 在执行给定的一系列操作后,你需要返回矩阵...

    扩展矩阵leetcode-Leetcode:LeetcodeAnswer-Java

    34.在排序数组中查找元素的第一个和最后一个位置 searchRange 48.旋转图像 rotate 54.螺旋矩阵 spiralOrder 66.加一 plusOne 73.矩阵置零 setZeroes 84.柱状图中最大的矩形 largestRectangleArea 152.乘积最大子序列...

    javalruleetcode-JavaPractice:Java实践

    java lru leetcode Java实践 算法 练习算法实现。 算法来自: 著名算法 算法介绍 极客 文章 回溯 回溯算法的特殊实践 ...JAVA基本概念理解。...JAVA ...JAVA ...螺旋矩阵 ...螺旋矩阵 ...设置矩阵零 ...数组除自身的乘积 ...两个整数相除

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例027 实现两个变量的互换(不借助 第3个变量) 37 2.3 条件语句 38 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 ...

    javalruleetcode-leetCodeQuestionsSolving:leetCodeQuestionsSolving

    个节点生成括号两个整数相除查找数组中的所有重复项排列旋转图像有效数独组字谜&lt;br 螺旋矩阵跳跃游戏合并间隔独特的路径设置矩阵零排序颜色子集词搜索解码方式二叉树中序遍历验证二叉搜索树二叉树级别顺序遍历...

    javalruleetcode-leetcode:力扣算法题解

    java lru leetcode leetcode 介绍 力扣算法解题,java语言 题解 简单 序号(力扣题序号) 题名 ...构建乘积数组 ...寻找两个有序数组的中位数 合并K个排序链表 接雨水 跳跃游戏II 插入区间 编辑距离 戳气球 LFU

    javalruleetcode-Leetcode:LeetCode、Swordoffer、数据结构、算法的编程题

    和为S的两个数字 so.50.数组中重复的数字 so.51.构建乘积数组 so.64.滑动窗口的最大值 lc.15.三数之和 lc.41.缺失的第一个正数 lc.54.螺旋矩阵 lc.88.合并两个有序数组 1.2 链表 题目 备注 进度 so.3.从尾到头打印...

    leetcode盒子嵌套-leetcode:leetcode上的解决方案

    数组中两个元素的最大乘积 21 按递增顺序显示卡片 22 按奇偶校验数组排序 23 最大单盒球数 24 阵列分区-i 25 通过反转子数组使两个数组相等 26 lcc-march2021/distribute-candies 27 计数项目匹配规则 28 目标解析器...

    ProgrammingPracticeFirstSemester:编程实践。 我学期

    翻转未知长度的字符串 从标准输入 '' 中读取最多两个字符。 以相反的顺序打印它们。 字符串长度超过 256 个字符。 任务 2. 翻转列表 你得到一个单向链表。 反方向翻过来。 原始列表可能会被破坏。 任务 3. 找出数组...

    javalruleetcode-LeetCode_idea:leetcode的编码本

    两个数字相加 反向链表 II 分区列表 从排序列表中删除重复项 从排序列表中删除重复项 II 轮换名单 从列表末尾删除第 N 个节点 成对交换节点 k-Group 中的反向节点 使用随机指针复制列表 链表循环 链表周期 II 重新...

    javalruleetcode-LeetCode:LeetCode第一遍刷题记录

    两个数字相加 反向链表 II 分区列表 从排序列表中删除重复项 从排序列表中删除重复项 II 轮换名单 从列表末尾删除第 N 个节点 成对交换节点 k-Group 中的反向节点 使用随机指针复制列表 链表循环 链表周期 II 重新...

    Differences-Finies:使用有限差分法求解微分方程

    差异完成通过有限差分法在一维和二维中使用有限差分法求解二阶微分方程我们使用库来具有操作矩阵的基本功能,两个矩阵的乘积,逆数... 实施一组测试以验证算法

Global site tag (gtag.js) - Google Analytics