应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

矩阵连乘求乘法次数(java实现)

  【矩阵连乘求乘法次数问题】
  题目:输入n个矩阵(矩阵名称为大写英文字母表示)的维度和一些矩阵链乘表达式,输出乘法的次数,也就是计算量。如果乘法无法进行,输出error。假定A是mn矩阵,B是np矩阵,那么A乘B是mp矩阵,乘法次数为mnp,一般我们把乘法次数称之为本次计算的计算量。如果A的列数不等于B的行数,则乘法无法进行。
  例如:A是5010的,B是1020的,C是205的,则(A(BC))的乘法次数为10205(BC的乘法次数)50105((A(BC))的乘法次数)3500。两次乘法的计算量之和。
  【输入形式】
  矩阵个数n。
  下面n行分别为n个矩阵的名称、行数和列数。
  需要计算的矩阵连乘的表达式。
  【输出形式】
  给出表达式的计算量(为n1次乘法的计算量之和)
  【样例输入】
  3hrA105
  B56
  C67
  (A(BC))
  【样例输出】
  560hr解题思路:本题需要根据矩阵的表达式来规定计算的顺序,需要通过栈的数据结构来解决计算的先后问题,可以从表达式的左括号和右括号寻找突破点,例如读到一个左括号就向栈里放入一个矩阵,读到一个右括号就计算一个矩阵得出新的矩阵并记录乘法次数,重复上述步骤,直到栈空为止,得出最终的结果。
  【详细分析】:
  首先需声明变量以及定义栈。
  intMatrixlengthin。nextInt();矩阵个数
  int〔〕Matrixnewint〔Matrixlength2〕;
  Matrixlength为矩阵的个数,数组Matrix用于存放矩阵的行列值。
  int〔〕stack1newint〔s。length()〕;行值
  int〔〕stack2newint〔s。length()〕;列值
  inttop0;栈指针
  intj0;用于遍历Matrix
  inttimes0;
  其中,stack1用于存放矩阵的行值,stack2用于存放矩阵的列值,两个栈共用一个栈指针top,j用于遍历数组Matrix。偶数(j2)位用于存储行值,奇数位(j21)用于存储列值。
  本例中Matrix〔〕{10,5,5,6,6,7}
  staticfinalStringSABCDEFGHIJKLMNOPQRSTUVWXYZ;
  定义矩阵字母表
  for(inti0;iMatrixlength;i){输入矩阵行列值
  b〔i〕in。next()。charAt(0);
  Matrix〔i2〕in。nextInt();
  Matrix〔i21〕in。nextInt();
  }
  Stringsin。next();输入矩阵连乘表达式
  输入矩阵和矩阵表达式:A105B56C67(A(BC))
  for(inti0;iMatrix。length21;i){判断矩阵是否符合连乘条件
  if(Matrix〔i21〕!Matrix〔(i1)2〕){
  return0;
  }
  }
  进行矩阵连乘之前需要判断这些矩阵是否符合连乘条件,即判断相邻矩阵的列值和行值是否相等。
  核心语句:
  for(inti0;is。length();i){入栈
  if(s。charAt(i)(){
  if(s。charAt(i1)!(){找到最内层左括号时矩阵入栈
  stack1〔top〕Matrix〔j2〕;
  stack2〔top〕Matrix〔j21〕;
  j;
  top;
  }
  }
  elseif(S。indexOf(s。charAt(i))!1s。charAt(i1))){字母左边为右括号需提前top
  top;
  }
  elseif(s。charAt(i))){出栈
  if(j2Matrix。lengths。charAt(i1)!)){遇到第一个右括号时矩阵入栈
  stack1〔top〕Matrix〔j2〕;
  stack2〔top〕Matrix〔j21〕;
  j;
  }
  timesstack1〔top〕stack2〔top〕stack1〔top1〕;
  stack2〔top1〕stack2〔top〕;相乘后所得新矩阵的列值
  top;
  if(top0j2Matrix。length){栈空但矩阵未完成遍历
  top;
  }
  }
  }
  returntimes;
  }
  从左向右依次扫描表达式s的字符,读到最内层的左括号(右边为矩阵字母)时读入一个矩阵,将其放入栈中,top,读到第一个右括号(右括号左边为矩阵字母)时,放入一个矩阵并计算times值,并得到新的矩阵的行列值,其行列值将上一个矩阵的行列值覆盖,top1。elseif(S。indexOf(s。charAt(i))!1s。charAt(i1))){字母左边为右括号需提前top
  top;
  }
  不过也有特殊的情况,如(A((BC)D)),在读到最后一个右括号时,需读入D矩阵,而在读入矩阵C后,top1,得到新的矩阵时top还指在新的矩阵,这时需要我们提前top来防止读入的矩阵D将新的矩阵行列值覆盖。
  【举例分析】:A105、B56、C67,(A(BC))
  【完整代码】:
  publicclassSolution{
  staticfinalStringSABCDEFGHIJKLMN;
  publicstaticintsolution(Strings,int〔〕Matrix){
  int〔〕stack1newint〔s。length()〕;行值
  int〔〕stack2newint〔s。length()〕;列值
  inttop0;栈指针
  intj0;用于遍历Matrix
  inttimes0;
  for(inti0;iMatrix。length21;i){判断矩阵是否符合连乘条件
  if(Matrix〔i21〕!Matrix〔(i1)2〕){
  return0;
  }
  }
  for(inti0;is。length();i){入栈
  if(s。charAt(i)(){
  if(s。charAt(i1)!(){找到最内层左括号时矩阵入栈
  stack1〔top〕Matrix〔j2〕;
  stack2〔top〕Matrix〔j21〕;
  j;
  top;
  }
  }
  elseif(S。indexOf(s。charAt(i))!1s。charAt(i1))){字母左边为右括号需提前top
  top;
  }
  elseif(s。charAt(i))){出栈
  if(j2Matrix。lengths。charAt(i1)!)){遇到第一个右括号时矩阵入栈
  stack1〔top〕Matrix〔j2〕;
  stack2〔top〕Matrix〔j21〕;
  j;
  }
  timesstack1〔top〕stack2〔top〕stack1〔top1〕;
  stack2〔top1〕stack2〔top〕;相乘后所得新矩阵的列值
  top;
  if(top0j2Matrix。length){栈空但矩阵未完成遍历
  top;
  }
  }
  }
  returntimes;
  }
  测试类:
  publicstaticvoidmain(String〔〕args){
  ScannerinnewScanner(System。in);
  intMatrixlengthin。nextInt();矩阵个数
  int〔〕Matrixnewint〔Matrixlength2〕;
  char〔〕bnewchar〔Matrixlength〕;矩阵大写字母,对计算无用
  for(inti0;iMatrixlength;i){输入矩阵行列值
  b〔i〕in。next()。charAt(0);
  Matrix〔i2〕in。nextInt();
  Matrix〔i21〕in。nextInt();
  }
  Stringsin。next();输入矩阵连乘表达式
  if(solution(s,Matrix)0){不符合连乘条件
  System。out。println(error);
  }else{
  System。out。println(solution(s,Matrix));
  }
  }
  }
  样例输出:
  你们学会了吗?

霜降后要知道忌嘴,建议少碰3样,多吃1瓜2根3叶,为入冬做准山明水净夜来霜,数树深红出浅黄,霜降过后,秋色将尽,与冬天的距离越来越近,秋风中已经多了几丝寒冷之气,给万物都蒙上了一层寒气。天气转寒后,在饮食方面就更加需要注意滋养和忌……科勒卡戴珊呼吁特里斯坦汤普森的ST计划赢得她的支持大家好在10月27日的TheKardashians剧集中,KhloeKardashian解释了她为什么大喊骗子!在Hulu节目4月首映期间出现在屏幕上以及为什么她不后悔。……芯片价格暴跌10倍,现在买手机划算吗?芯片价格暴跌10倍:全球一年出货1。15万亿颗,现在换手机直接血赚?这几年要说什么涨价最快,除了生活费,我想就是芯片了。显卡涨成咋样就不用多说了,真的是活久见。记得之前芯……淄博公交关于调整1元公交游景点线路发车点的通告大众网海报新闻记者董凯淄博报道因华光路慢行一体改造,道路半幅封闭,在义乌小商品城始发的1元公交游景点线路无法停靠,为了方便市民出游,自10月1日起,在义乌发车的8条1元公……3000价位,推荐适合女生使用的5G手机,256GB存储独显说实话,推荐手机的数码博主不少,本人也评测过很多手机,不过很少有专门去适合女生使用的手机。再一个也是因为当下手机企业对于手机的设计都偏中性化,男生女生都可以接受其外观和设计。但……孙颖莎是怎样从国乒1号主力变成4号主力的曾和几时,孙颖莎可是国乒的宠儿,刘国梁爱戴,媒体吹捧,粉丝力挺,大满贯们为她吹嘘,甚至张怡宁和李晓霞更是强有力地推宠爱戴她,张怡宁更是吹嘘这孩子打球和别人不一样,仿佛看到了国乒……少打一人21,上海海港拒绝被逆转,颜骏凌立大功,武磊替补登场中超联赛第16轮补赛,上海海港对阵河南嵩山龙门,最终他们以21战胜对手。本战,上港队少打一人,却非常坚韧,拒绝被逆转。国门颜骏凌立大功了,屡献神扑。另外值得一提的是,武磊登场,……央视报道!奥运冠军何可欣爆料因长得不漂亮被国家队教练拒绝竞技体育是非常残酷的,因为冠军只有一个,能成为奥运会冠军,不仅需要吃常人吃不了的苦,同时还要占据天时地利与人和。身为一名职业运动员,如果职业生涯能夺得奥运会的金牌,足以说明他的……奶奶带娃不走寻常路,天天陪娃玩游戏,却带娃玩出超强专注力奶奶带娃不走寻常路,天天陪娃玩游戏却带娃玩出超强的专注力随着社会经济的发展,当下的孩子们不仅生活环境变好了,而且很多家庭都只有一个孩子,不仅爸爸妈妈从小宠着爱着,而……特纳阿尔特塔对球员要求很严格,在他治下我进步了很多近日,阿森纳门将马特特纳在接受采访时谈到了他加盟球队后与阿尔特塔的相处,并透露阿尔特塔在球场上是一个非常有激情的人。特纳表示:当时我们开展的一次控球训练,以比赛的方式进行……这才是土豆最好吃的做法,不炒也不炖,出锅营养丰富又美味,真香国以民为本,民以食为天,各位老饕大家好!今天给大家教一个土豆丝鸡蛋早餐饼,方法简单,食材也很普通,但是做好了吃起来酥软咸香,营养美味,特别适合早上吃。大家快和我一起做给家人吧!……拜仁慕尼黑球迷抨击欧足联因为皇室成员之死而改变赛程拜仁慕尼黑球迷张开横幅回应女王去世后欧冠和欧联杯赛程的推迟和重新安排拜仁慕尼黑的支持者将矛头对准了欧足联,因为他们在女王去世后做出了重大改变欧洲冠军联赛和欧罗巴联赛赛程安……
穿着肚兜吊带出门的女生,是不是很多都没有男朋友?为什么很多女生都爱穿肚兜吊带,明明男朋友不让,还对自己的安全造成一些隐患,却还是趋之若鹜呢?首先吊带能够完美的展示好身材,凸显锁骨,性感美呼之欲出,其次夏天穿着舒服又凉快……卫衣牛仔裤早就过气了!2023流行这3种穿法,回头率高还时髦懂得接受造型的不美好,我们才能发掘出穿搭的更多细节感,不需要让单品之间针锋相对,我们只寻求最洋气也最显高的造型组合。春季穿搭卫衣,有一个审美观念是非常清晰的,我们要懂得利……南果北种,李村镇在黄河岸边建起百果生态园区阳春三月,天气乍暖还寒。3月18日,走进菏泽市牡丹区李村镇百果香热带果蔬采摘园,浓郁的草莓香味扑面而来,游客们正在忙着采摘新鲜草莓。游客们自己采摘草莓是20元一斤,我们采……定了!身边的奥运会今年玩这36项长江日报大武汉客户端3月21日讯(记者朱文秀通讯员胡健)近期开展的2023年武汉市第十一届全民健身运动会比赛项目征集活动引来全城关注。截至投票结束当天为止,共有120万余人次参……解惑师者,传道受业解惑者也。而有的问题,或许一生也解决不了,那我们是否要纠结于问题的本身还是享受解决问题的当下呢?生活中无法避免的亲人离去的痛苦,适当的安慰能够缓解一些当下的……篮协能给易建联开绿灯周琦参加CBA可行,辽篮现场试训莫兰德20222023赛季CBA联赛最后一次本土球员注册窗口期已经关闭,周琦按照国家体育总局2023年1月1日正式实施的体育仲裁规则进行申诉中,目前还没有任何的结果出来;正常情况下,……刘圣书张殊贤首次配对打进印尼大师赛决赛!成为国羽最大惊喜!圣贤书组合再次续写奇迹!国羽女双新星刘圣书继续不败神话,首次组合参赛的刘圣书张殊贤半决赛战胜泰国组合,已经打进印尼羽毛球大师赛决赛!印尼羽毛球大师赛半决赛,国羽拆分重组试……三次申请上市未果富卫集团再度冲刺IPO2023年3月13日,富卫集团有限公司(下称富卫集团)向港交所提交上市申请书,拟募资10亿美元,并预期于今年二季度招股上市,摩根士丹利、高盛、招银国际、摩根大通为其联席保荐人。……2场7球!国足爆发!陈戌源贪心,分赃交易曝光1次收0。5亿贿关于中国足球的新闻,可以说是有喜有忧,近日,国足的多支球队开启了热身之旅,好消息接连传来,先是我们的国奥队在克罗地亚队取胜,31的比分赢球,而U17国足在沙特以41的比分取胜,……20222023赛季CBA联赛常规赛第三阶段恢复主客场赛制!你有多久没在主场听到熟悉的闹他?告别三年的赛会制,山西球迷终于可以在家门口迎来熟悉的面孔和激动人心的比赛了!20222023赛季CBA联赛常规赛第三阶段即将开赛并恢复主客……飞纽约飞了16个小时,最后返回了新西兰,乘客们晕了!2月16日晚上,国际旅客们登上了新西兰航空公司(AirNewZealand)一架飞往纽约的航班,总航程16多小时。但令他们没有想到的是,在经历了16个小时的长途飞行后,他们竟然……一年一度的梅花节即将到来,拿着这份赏花攻略出发吧!倚东风,一笑嫣然,转盼万花羞落。万物复苏,春意盎然,此时正是梅花盛开、尽享风光的好时节。盛开的梅花为海湾镇带来了晴暖冬日的浓浓气息。梅好的日子,来海湾镇寻觅。2月21日,……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网