#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long LL;
char op[5];
LL ans=1e18;
void dfs(vector<LL>v,int u) //u表示操作符op序号
{
if(v.size()==1) ans=min(ans,v[0]);
else
{
for(int i=0;i<v.size();i++)
for(int j=i+1;j<v.size();j++)
{
vector<LL>t;
for(int k=0;k<v.size();k++) //将没被选中的数字放进新的数组t中
if(k!=i&&k!=j) t.push_back(v[k]);
if(op[u]=='*') t.push_back(v[i]*v[j]);
else t.push_back(v[i]+v[j]);
dfs(t,u+1);
}
}
}
int main()
{
vector<LL>v(4);
for(int i=0;i<4;i++) cin>>v[i];
for(int i=0;i<3;i++) cin>>op[i];
dfs(v,0);
cout<<ans<<endl;
return 0;
}
技巧爆搜/操作符树
最新推荐文章于 2024-08-28 14:35:43 发布