题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
输入格式
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 +
和乘法运算符 *
,且没有括号,所有参与运算的数字均为 00 到 231−1231−1 之间的整数。输入数据保证这一行只有 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, +
, *
这12种字符。
输出格式
设这个表达式的值为 xx,则输出 x mod 10000xmod10000。
输入数据 1
1+1*3+4
输出数据 1
8
题解
#include<bits/stdc++.h>
using namespace std;
int n,x,y;
int r;
bool h[111];
struct node{
int x,st;
};
vector<int> q[111];
queue<node> p;
void bfs(){
int st;
p.push({x,0});
h[x]=1;
while(!p.empty()){
x=p.front().x;
st=p.front().st;
p.pop();
for(int i=0;i<q[x].size();i++){
if(!h[q[x][i]]){
h[q[x][i]]=1;
if(q[x][i]==y) {
cout<<st<<endl;
return;
}
p.push({q[x][i],st+1});
}
}
}
}
int main(){
cin>>n>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
cin>>r;
if(r){
q[i].push_back(j);
}
}
if(x==y){
cout<<0<<endl;
return 0;
}
bfs();
return 0;
}
信息
语言
C++14
递交时间
8 分钟前
评测时间
8 分钟前
分数
100
总耗时
35ms
峰值内存
6.5 MiB