蒟蒻啥也不会,闲着蛋疼 搞爆搜,10和11两个点过不去QwQ ,不知道哪个细节出问题了
#include<bits/stdc++.h>
using namespace std;
double a[5],r[5];char c[5]={0,43,45,42,47};
signed main()
{
for(int i=1;i<=4;i++)cin>>a[i];
if(a[1]==a[2]&&a[1]==a[3]&&a[1]==a[4])
{
if(a[1]==3)
{
cout<<3<<'*'<<3<<"="<<9<<endl;
cout<<9<<'*'<<3<<"="<<27<<endl;
cout<<27<<'-'<<3<<"="<<24<<endl;
}
else if(a[1]==4)
{
cout<<4<<'*'<<4<<"="<<16<<endl;
cout<<4<<'+'<<4<<"="<<8<<endl;
cout<<16<<'+'<<8<<"="<<24<<endl;
}
else if(a[1]==5)
{
cout<<5<<'*'<<5<<"="<<25<<endl;
cout<<5<<'/'<<5<<"="<<1<<endl;
cout<<25<<'-'<<1<<"="<<24<<endl;
}
else if(a[1]==6)
{
cout<<6<<'*'<<6<<"="<<36<<endl;
cout<<36<<'-'<<6<<"="<<30<<endl;
cout<<30<<'-'<<6<<"="<<24<<endl;
}
else if(a[1]==12)
{
cout<<12<<'+'<<12<<"="<<24<<endl;
cout<<24<<'+'<<12<<"="<<36<<endl;
cout<<36<<'-'<<12<<"="<<24<<endl;
}
else cout<<"No answer!";
return 0;
}
for(int first=1;first<=4;first++)
{
for(int second=1;second<=4;second++)
{
if(first!=second)
{
for(int third=1;third<=4;third++)
{
if(first!=third&&second!=third)
{
int fourth=10-first-second-third;
for(int i=1;i<=4;i++)//1+ 2- 3* 4/
{
double ans=a[first];
memset(r,0,sizeof(r));
if(i==1)ans+=a[second];
else if(i==2)ans=max(ans,a[second])-min(ans,a[second]);
else if(i==3)ans*=a[second];
else ans/=a[second];
if(ans<0)continue;
r[1]=ans;//前两个数
for(int j=1;j<=4;j++)
{
if(j==1)ans+=a[third];
else if(j==2)ans=max(ans,a[third])-min(ans,a[third]);
else if(j==3)ans*=a[third];
else ans/=a[third];
r[2]=ans;//前三个数
for(int k=1;k<=4;k++)
{
double ans2=a[third];
if(k==1)
{
ans+=a[fourth];ans2+=a[fourth];r[3]=ans2;//后两个数
}
else if(k==2)
{
ans=max(ans,a[fourth])-min(ans,a[fourth]);
ans2=max(ans2,a[fourth])-min(ans2,a[fourth]);r[3]=ans2;
}
else if(k==3)
{
ans*=a[fourth];ans2*=a[fourth];r[3]=ans2;
}
else{
ans/=a[fourth];ans2/=a[fourth];r[3]=ans2;
}
if(ans==24)
{
cout<<max(a[first],a[second])<<c[i]<<min(a[first],a[second])<<"="<<r[1]<<endl;
cout<<max(r[1],a[third])<<c[j]<<min(r[1],a[third])<<"="<<r[2]<<endl;
cout<<max(r[2],a[fourth])<<c[k]<<min(r[2],a[fourth])<<"="<<24<<endl;
return 0;
}
if(j==1)ans2=ans2+r[1];
else if(j==2)ans2=r[1]-ans2;
else if(j==3)ans2=r[1]*ans2;
else ans2=r[1]/ans2;
if(ans2==24)
{
cout<<max(a[first],a[second])<<c[i]<<min(a[first],a[second])<<"="<<r[1]<<endl;
cout<<max(a[fourth],a[third])<<c[k]<<min(a[fourth],a[third])<<"="<<r[3]<<endl;
cout<<max(r[1],r[3])<<c[j]<<min(r[1],r[3])<<"="<<24<<endl;
return 0;
}
}
}
}
}
}
}
}
}
cout<<"No answer!";
return 0;
}
求助大佬!!!(100%爆搜,绝对看得懂)