题目:
题解:
代码如下:
class Solution {
public:
// 这题不需要写dfs枚举,由于范围较小,只需要双重for枚举即可
string minimizeResult(string s) {
int pos=s.find('+'),n=s.size();
int mx=INT_MAX;
string res;
for(int i=0;i<pos;++i){
// num1总共有pos个数字,a分i个数字,即a=num1[0,i-1];b分pos-i个数字,即b=nums1[i,pos-1]
string sa=s.substr(0,i),sb=s.substr(i,pos-i);
int a=sa.size()==0?1:stoi(sa);
int b=stoi(sb);
for(int j=pos+1;j<n;++j){
// num2总共有n-pos-1个数字,c分j-pos个数字,从pos+1到j需要j+1-pos-1=j-pos个数字;d分n-j-1个数字,前面已经用了j+1个数字了,所以后面只能用n-j-1个数字了
string sc=s.substr(pos+1,j-pos),sd=s.substr(j+1,n-j-1);
int c=stoi(sc);
int d=sd.size()==0?1:stoi(sd);
if(a*(b+c)*d<mx){
mx=a*(b+c)*d;
res=sa+"("+sb+"+"+sc+")"+sd;
}
}
}
return res;
}
};