解题(JuZhengCalculate-矩阵乘法计算量)
题目描述
矩阵乘法的运算量与矩阵乘法的顺序强相关。
例如:
A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵
计算A*B*C有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。
编写程序计算不同的计算顺序需要进行的乘法次数
输入描述:
输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入要计算的法则
输出描述:
输出需要进行的乘法次数
输入
3
50 10
10 20
20 5
(A(BC))
输出
3500
代码如下:
package com.yzh.xuexi; import java.util.Scanner;
import java.util.Stack; public class JuZhengCalculate { public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int n=Integer.parseInt(scanner.nextLine());
int[][] arr=new int[n][];
for(int i=0;i<arr.length;i++){
arr[i]=new int[2];
String[] sArr=scanner.nextLine().split("\\s+");
arr[i][0]=Integer.parseInt(sArr[0]);
arr[i][1]=Integer.parseInt(sArr[1]);
}
String rule=scanner.nextLine();
System.out.println(juZhengCalculate(arr, rule)); }
scanner.close();
}
/*
* 用栈(依次遍历):遇到“(”直接跳过,什么也不做。遇到“字母”时就压栈,遇到“)”时就连续出两个字母(每个字母对应一个矩阵),做相应计算(累加每次乘法次数),这时会得到一个新矩阵,
* 用一个不重复的字母对应新矩阵并压栈。处理完最后一个“)”得到计算结果(累加值)。
*/
private static int juZhengCalculate(int[][] arr,String rule) {
Stack<Character> stack=new Stack<Character>();
char[] cArr=rule.toCharArray();
char c1,c2;
int number=0;
int[] jzArr1,jzArr2;
int[][] newArr=new int[26][];
char newC='a';
for (int i = 0; i <cArr.length; i++) {
if (cArr[i]>=65&&cArr[i]<=90) {
stack.push(cArr[i]);
}else if (cArr[i]==')') {
if (stack.size()==1) {
return number;
}
c2=stack.pop();
c1=stack.pop();
if (c1>=65&&c1<=90) {
jzArr1=arr[c1-65];
}else {
jzArr1=newArr[c1-97];
} if (c2>=65&&c2<=90) {
jzArr2=arr[c2-65];
}else {
jzArr2=newArr[c2-97];
}
number+=jzArr1[0]*jzArr1[1]*jzArr2[1];
int[] tempArr={jzArr1[0],jzArr2[1]};
newArr[newC-97]=tempArr;
stack.push(newC++);
}
}
return number; }
}
3500
解题(JuZhengCalculate-矩阵乘法计算量)的更多相关文章
- 深度学习之(经典)卷积层计算量以及参数量总结 (考虑有无bias,乘加情况)
目录: 1.经典的卷积层是如何计算的 2.分析卷积层的计算量 3.分析卷积层的参数量 4.pytorch实现自动计算卷积层的计算量和参数量 1.卷积操作如下: http://cs231n.github ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- 矩阵乘法的运算量计算(华为OJ)
题目地址: https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b?tpId=37&&tqId=21293 ...
- 洛谷 P1527 [国家集训队]矩阵乘法 解题报告
P1527 [国家集训队]矩阵乘法 题目描述 给你一个\(N*N\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(K\)小数. 输入输出格式 输入格式: 第一行两个数\(N,Q\),表示矩阵大 ...
- 学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67
本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足 ...
- 蓝桥杯 BASIC_17 矩阵乘法 (矩阵快速幂)
问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0& ...
- 4-2.矩阵乘法的Strassen算法详解
题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B ...
- cuda(2) 矩阵乘法优化过程
Created on 2013-8-5URL : http://blog.sina.com.cn/s/blog_a502f1a30101mjch.html@author: zhxfl转载请说明出处 # ...
- 【转】Matrix67:十个利用矩阵乘法解决的经典题目
好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质. 不要以为数学中的矩阵也是黑色屏幕上不断变化的 ...
随机推荐
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- 《算法》第六章部分程序 part 5
▶ 书中第六章部分程序,包括在加上自己补充的代码,网络最大流 Ford - Fulkerson 算法,以及用到的流量边类和剩余流量网络类 ● 网络最大流 Ford - Fulkerson 算法 pac ...
- hping安装过程
转载: http://www.safecdn.cn/website-announcement/2018/12/hping-install/97.html Hping的主要功能有: 测试防火墙实用的 ...
- impala 和 kudu 小记
1. impala(官网) 实时交互SQL大数据查询工具 它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据. Impala的最大特点也是最大卖点就是它的快速. Impa ...
- PHP企业微信授权
1.添加应用菜单. 2.access_token /** * 获取token * @return [type] [description] */ public function getToken() ...
- ASPxCallbackPanel(珍藏版)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AspxCallbackPane ...
- idea 与springboot 快捷键
ctrl + m 还原 查询 getmapping 修改默认端口号
- Project2016下载安装密钥激活教程破解
project2016发布增加了许多功能.Microsoft Office 2016 官方正式版发布!这是微软发布的全新办公软件套件,相比现有Office 2013的变化也不是很大,界面和功能都只是微 ...
- day41-解决粘包问题
一.socket缓冲区 研究粘包之前先看看socket缓冲区的问题: 二.socket缓存区的详细解释 每个socket被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区. write()/send ...
- mui longtap 事件无效
1.mui 的部分事件默认是关闭的 需要在init中单独配置事件开关 mui.init({ gestureConfig: { longtap: true, //默认为false } })