求问大佬括号运算怎么解决,我的代码好像只能按abcd的顺序计算
#include<bits/stdc++.h>
#define ll long long
#define dl double
using namespace std;
const int N=1e5+5;
const int inf=1e9;
int arr[5],flag;
bool fl[5];
vector<string> v;
void dfs(int ans) {
if(flag==1)return;
if(ans==24) { //得到答案
flag=1;
for(auto it:v)cout<<it<<'\n';
return;
}
for(int i=1; i<=4; i++) {//枚举四个数
if(!fl[i]) {
//大数在前
int maxs=max(ans,arr[i]),mins=min(ans,arr[i]);
//尝试加减乘除
v.push_back(to_string(maxs)+"+"+to_string(mins)+"="+to_string(maxs+mins));
fl[i]=1;
dfs(maxs+mins);
v.pop_back();
fl[i]=0;
//回溯
v.push_back(to_string(maxs)+"-"+to_string(mins)+"="+to_string(maxs-mins));
fl[i]=1;
dfs(maxs-mins);
v.pop_back();
fl[i]=0;
v.push_back(to_string(maxs)+"*"+to_string(mins)+"="+to_string(maxs*mins));
fl[i]=1;
dfs(maxs*mins);
v.pop_back();
fl[i]=0;
//除法判断
if(maxs==0||mins==0)continue;
if(maxs%mins==0) {
v.push_back(to_string(maxs)+"/"+to_string(mins)+"="+to_string(maxs/mins));
fl[i]=1;
dfs(maxs/mins);
v.pop_back();
fl[i]=0;
}
}
}
}
int main() {
for(int i=1; i<=4; i++)cin>>arr[i];
for(int i=1; i<=4; i++) {//枚举四个数开头
fl[i]=1;
dfs(arr[i]);
fl[i]=0;
}
if(!flag)cout<<"No answer!";
return 0;
}