当前位置:网站首页>[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 on market supply and demand and strategy of Chinese hospital cleaning chemicals industry
- 区间和------离散化
- Opencv learning log 15 count the number of solder joints and output
- Opencv learning log 13 corrosion, expansion, opening and closing operations
- 【练习-6】(PTA)分而治之
- China's earthwork equipment market trend report, technical dynamic innovation and market forecast
- F - Birthday Cake(山东省赛)
- Market trend report, technological innovation and market forecast of pneumonia drugs obtained by Chinese hospitals
- cs零基础入门学习记录
- 【练习-5】(Uva 839)Not so Mobile(天平)
猜你喜欢

C语言数组的概念

Learning records: serial communication and solutions to errors encountered

Learning record: Tim - Basic timer
![mysql导入数据库报错 [Err] 1273 – Unknown collation: ‘utf8mb4_0900_ai_ci’](/img/e6/f4a696179282fe1f4193410c5a493a.png)
mysql导入数据库报错 [Err] 1273 – Unknown collation: ‘utf8mb4_0900_ai_ci’

数据在内存中的存储&载入内存,让程序运行起来

STM32 learning record: LED light flashes (register version)

渗透测试 ( 8 ) --- Burp Suite Pro 官方文档

Matlab example: two expressions of step function

C语言必背代码大全

信息安全-威胁检测-NAT日志接入威胁检测平台详细设计
随机推荐
Cost accounting [19]
【练习-6】(Uva 725)Division(除法)== 暴力
区间和------离散化
Accounting regulations and professional ethics [3]
【练习-7】Crossword Answers
基于web的照片数码冲印网站
Truck History
Accounting regulations and professional ethics [1]
渗透测试 ( 3 ) --- Metasploit Framework ( MSF )
China exterior wall cladding (EWC) market trend report, technical dynamic innovation and market forecast
Market trend report, technological innovation and market forecast of pneumonia drugs obtained by Chinese hospitals
Opencv learning log 16 paperclip count
China earth moving machinery market trend report, technical dynamic innovation and market forecast
Cost accounting [22]
【练习-7】(Uva 10976)Fractions Again?!(分数拆分)
X-forwarded-for details, how to get the client IP
STM32 learning record: LED light flashes (register version)
【练习-10】 Unread Messages(未读消息)
Information security - threat detection - Flink broadcast stream broadcaststate dual stream merging application in filtering security logs
China's salt water membrane market trend report, technological innovation and market forecast