这题,不难,想了一会,1A,
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<string>
#include<set>
#include<map>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cctype>
#include<queue>
#define LL long long
using namespace std;
const int maxn=1e7+10;
const double eps=1e-8;
const int Max=2147483647;
LL s_min(string s)
{
LL sum=0;
int num=0;
LL flag=1;
for(int i=0;i<=s.length();i++)
{
if(s[i]=='*')
{
flag*=num;
num=0;
}
else if(i==s.length()||s[i]=='+')
{
sum=sum+num*flag;
num=0;
flag=1;
}
else
{
num=num*10+s[i]-'0';
}
}
return sum;
}
LL s_max(string s)
{
LL sum=1;
int num=0;
int flag=0;
for(int i=0;i<=s.length();i++)
{
if(s[i]=='+')
{
flag+=num;
num=0;
}
else if(i==s.length()||s[i]=='*')
{
sum=sum*(flag+num);
flag=0;
num=0;
}
else
{
num=num*10+s[i]-'0';
}
}
return sum;
}
int main()
{
int n;
cin>>n;
while(n--)
{
string s;
cin>>s;
printf("The maximum and minimum are %lld and %lld.\n",s_max(s),s_min(s));
}
return 0;
}

本文介绍了一种用于解析包含数字、加号和乘号的字符串的算法,该算法通过两种不同的解析方式得出最大值和最小值。文章提供了完整的C++实现代码,并详细解释了如何通过遍历字符串来计算最终结果。
2001

被折叠的 条评论
为什么被折叠?



