表达式求值--牛客网--面试题

题目描述

今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:

1+2*3=7
1*(2+3)=5
1*2*3=6
(1+2)*3=9

现在小易希望你帮他计算给定3个数a,b,c,在它们中间添加"+", "*", "(", ")"符号,能够获得的最大值。

输入描述:

一行三个数a,b,c (1 <= a, b, c <= 10)

输出描述:

能够获得的最大值

示例1

输入

1 2 3

输出

9

参考代码:


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    int n=3;
    vector<int>data(n);
    for(int i=0;i<n;++i)
        cin>>data[i];
    sort(data.begin(),data.end());
    int sum=data[0];
    for(int i=1;i<n;++i)
    {
        if(data[i]==1 ||sum==1)
            sum+=data[i];
        else
            sum=sum*data[i];
    }
    cout<<sum<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40513792/article/details/104287927