题目: https://www.luogu.com.cn/problem/CF55B
https://codeforces.com/problemset/problem/55/B
代码:
#include <map>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
long long m[10005];
long long n[10005];
char a[5];
bool f1[10];
bool f2[10];
long long mina=99999999999999;
void dfs(int n){
if(n==3){
for(int i=1;i<=4;i++){
if(f1[i]==false){
mina=min(mina,m[i]);
return ;
}
}
}
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
if(f1[i]==false&&f1[j]==false&&i!=j){
f1[j]=true;
for(int k=1;k<=3;k++){
if(f2[k]==false){
if(a[k]=='+'){
long long u=m[i];
m[i]=(m[i]+m[j]);
f2[k]=true;
dfs(n+1);
f2[k]=false;
m[i]=u;
}
else{
long long v=m[i];
m[i]=(m[i]*m[j]);
f2[k]=true;
dfs(n+1);
f2[k]=false;
m[i]=v;
}
}
}
f1[j]=false;
}
}
}
}
int main() {
cin>>m[1]>>m[2]>>m[3]>>m[4];
cin>>a[1]>>a[2]>>a[3];
dfs(0);
cout<<mina;
return 0;
}