这段代码还会胡言乱语,可以测一下
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,p[10],q[10],op[10],ans[10][10],x,y;
bool flag;
void print(long long now){
if(now>3){
return;
}
cout<<ans[now][1];
if(op[now]==1){
cout<<"+";
}
if(op[now]==2){
cout<<"-";
}
if(op[now]==3){
cout<<"*";
}
if(op[now]==4){
cout<<"/";
}
cout<<ans[now][2];
cout<<"=";
if(op[now]==1){
cout<<ans[now][1]+ans[now][2];
}
if(op[now]==2){
cout<<ans[now][1]-ans[now][2];
}
if(op[now]==3){
cout<<ans[now][1]*ans[now][2];
}
if(op[now]==4){
cout<<ans[now][1]/ans[now][2];
}
cout<<endl;
print(now+1);
}
void dfs(long long now){
if(flag==1){
return;
}
if(now==4){
long long cnt=0,tmp=0;
for(int i=1;i<=4;i++){
if(p[i]!=-1){
cnt++;
tmp=p[i];
}
}
if(cnt==1&&tmp==24){
print(1);
flag=1;
}
return;
}
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
if(i==j||p[i]==-1||p[j]==-1){
continue;
}
op[now]=1;
ans[now][1]=max(p[i],p[j]);
ans[now][2]=min(p[i],p[j]);
x=p[i];
y=p[j];
p[i]=x+y;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
if(p[i]>p[j]){
op[now]=2;
ans[now][1]=p[i];
ans[now][2]=p[j];
x=p[i];
y=p[j];
p[i]=x-y;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
}
if(p[j]>p[i]){
op[now]=2;
ans[now][1]=p[j];
ans[now][2]=p[i];
x=p[i];
y=p[j];
p[i]=y-x;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
}
op[now]=3;
ans[now][1]=max(p[i],p[j]);
ans[now][2]=min(p[i],p[j]);
x=p[i];
y=p[j];
p[i]=x*y;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
if(p[j]!=0&&p[i]%p[j]==0){
op[now]=4;
ans[now][1]=p[i];
ans[now][2]=p[j];
x=p[i];
y=p[j];
p[i]=x/y;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
}
if(p[i]!=0&&p[j]%p[i]==0){
op[now]=4;
ans[now][1]=p[j];
ans[now][2]=p[i];
x=p[i];
y=p[j];
p[i]=y/x;
p[j]=-1;
dfs(now+1);
p[i]=x;
p[j]=y;
}
}
}
}
long long read(){
char ch=getchar();
long long sgn=1,x=0;
while(ch<'0'||ch>'9'){
if(ch=='-'){
sgn=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
return x*sgn;
}
void write(long long n,bool p){
if(n<0){
putchar('-');
n=-n;
}
if(n==0){
if(p==true){
putchar('0');
}
return;
}
write(n/10,0);
putchar(n%10+'0');
}
int main(){
cin>>a>>b>>c>>d;
p[1]=a;
p[2]=b;
p[3]=c;
p[4]=d;
sort(p+1,p+4+1);
dfs(1);
if(flag==0){
cout<<"No answer!"<<endl;
return 0;
}
return 0;
}