编辑代码

#include <bits/stdc++.h>
using namespace std;
char opt[5]= {'0','+','-','*','/'};
int F(int x,int k, int y)                                 
{
  if(k==1)return x+y;
  if(k==2)return max(x,y)-min(x,y);
  if(k==3)return x*y;
  return (y!=0 && x>y && x%y==0) ? x/y : -99999;
}
int cnt=0;
void Out(int a,int b,int c,int d,int e,int f,int k1,int k2,int k3)
{
  cout<<max(a,b)<<opt[k1]<<min(a,b)<<"="<<F(max(a,b),k1,min(a,b))<<endl;
  cout<<max(c,d)<<opt[k2]<<min(c,d)<<"="<<F(max(c,d),k2,min(c,d))<<endl;
  cout<<max(e,f)<<opt[k3]<<min(e,f)<<"="<<F(max(e,f),k3,min(e,f))<<endl; 
  cout<<endl; 
  cnt++;                                             
}
int main()
{
  int a[5];
  cin>>a[1]>>a[2]>>a[3]>>a[4];
  sort(a+1,a+5);                                            
  do
  {
    for (int i = 1; i <= 4; i++)                           
      for (int j = 1; j <= 4; j++)
        for (int k = 1; k <= 4; k++)
          if (F(F(F(a[1],i,a[2]),j,a[3]),k,a[4])==24)
            Out(a[1],a[2],F(a[1],i,a[2]),a[3],F(F(a[1],i,a[2]),j,a[3]),a[4],i,j,k);
          else if (F(F(a[1],i,a[2]),k,F(a[3],j,a[4])) == 24)
            Out(a[1],a[2],a[3],a[4],F(a[1],i,a[2]),F(a[3],j,a[4]),i,j,k);
  }  while (next_permutation(a + 1, a + 5));
  if(cnt==0)
    cout<<"No answer!"<<endl;
  return 0;
}