当前位置:网站首页>[exercise-3] (UVA 442) matrix chain multiplication
[exercise-3] (UVA 442) matrix chain multiplication
2022-07-06 15:56:00 【Flame car】
Translate directly :
Input n Dimensions of matrices and expressions of matrix chain multiplication , Output the number of multiplications . If multiplication doesn't work , The output error. Jiading A yes mn Matrix ,B yes np Matrix , that AB yes mp Matrix , The number of multiplications is mn*p. If A The number of columns is not equal to B The number of rows , Then multiplication cannot be performed .
for example ,A yes 50 * 10 Of ,B yes 10 * 20 Of ,C yes 20 * 5 Of , be (A(BC)) Is multiplied by 10 * 20 * 5(BC The number of multiplications ) + 50 *10 * 5((A(BC)) The number of multiplications ) = 3500.
AC Code :
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+5;
const ll mod = 1e9+7;
struct node{
int x;
int y;
}a[26];
int main()
{
int n;
char ch;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>ch;
cin>>a[ch-'A'].x;
cin>>a[ch-'A'].y;
}
string s;
while(cin>>s)
{
stack<node> st;
int f=1,ans=0;
int len = s.size();
if(len == 0 )
{
cout<<0<<endl;
continue;
}
for(int i=0;i<len;i++)
{
if(s[i]>='A' && s[i]<='Z')
st.push(a[s[i]-'A']);
else if(s[i]==')')
{
node x2 = st.top();st.pop();
node x1 = st.top();st.pop();
if(x1.y != x2.x){
f = 0;
break;
}
ans+=x1.x*x1.y*x2.y;
node tmp;
tmp.x=x1.x,tmp.y=x2.y;
st.push(tmp);
}
}
if(f)
cout<<ans<<endl;
else
cout<<"error"<<endl;
}
}
Ideas :
① Use a structure to store two values of each letter .
② Stack the structure
③ encounter ‘(’ Ignore , encounter ’)' Operate once when .
④ Content of operation : Take out the first two elements of the stack for matrix chain multiplication ( Note that the first one is the back one ,AB Perform matrix chain multiplication , Stack pops up first B Pop up after A), Put the newly obtained element on the stack .
⑤ If matrix chain multiplication cannot be performed, mark and exit .
I didn't understand at first , Want to put characters char Put it in the stack , But in this way Put the newly obtained elements on the stack It's very troublesome , If you put the structure directly into the stack, it can be easily implemented .
Here you can write a Constructors , Directly initialize the definition structure (C++ I learned it in school ), In that case, you can define one less tmp Structure .
边栏推荐
- Research Report of cylindrical grinder industry - market status analysis and development prospect forecast
- Opencv learning log 14 - count the number of coins in the picture (regardless of overlap)
- Cost accounting [13]
- MySQL import database error [err] 1273 - unknown collation: 'utf8mb4_ 0900_ ai_ ci’
- Research Report on pharmaceutical R & D outsourcing service industry - market status analysis and development prospect forecast
- 【练习-7】(Uva 10976)Fractions Again?!(分数拆分)
- Cost accounting [23]
- STM32 how to use stlink download program: light LED running light (Library version)
- D - Function(HDU - 6546)女生赛
- Optimization method of path problem before dynamic planning
猜你喜欢
Matlab example: two expressions of step function
【高老师软件需求分析】20级云班课习题答案合集
Information security - threat detection engine - common rule engine base performance comparison
B - 代码派对(女生赛)
C语言必背代码大全
7-1 懂的都懂 (20 分)
Gartner:关于零信任网络访问最佳实践的五个建议
X-forwarded-for details, how to get the client IP
Information security - Analysis of security orchestration automation and response (soar) technology
TCP的三次握手与四次挥手
随机推荐
基于web的照片数码冲印网站
力扣刷题记录--完全背包问题(一)
渗透测试 ( 1 ) --- 必备 工具、导航
动态规划前路径问题优化方式
STM32学习记录:LED灯闪烁(寄存器版)
入门C语言基础问答
Research Report on market supply and demand and strategy of China's Medical Automation Industry
China exterior wall cladding (EWC) market trend report, technical dynamic innovation and market forecast
Opencv learning log 12 binarization of Otsu method
Learning record: how to perform PWM output
Opencv learning log 31 -- background difference
Learning record: use STM32 external input interrupt
nodejs爬虫
SSM框架常用配置文件
Research Report of cylindrical grinder industry - market status analysis and development prospect forecast
Cost accounting [13]
动态规划前路径问题
0-1 knapsack problem (I)
初入Redis
最全编程语言在线 API 文档