#include<iostream>
using namespace std;
Backtrack( int);
Move(int,int,int,int);
static int qq=0;
static int t=4;
int a[4]={0};
int b[3][4]={{0},{0},{0}};
int c=0;
int main()
{
for( int i=0;i<4;i++)
cin>>a[i];
Backtrack(t);
cout<<qq<<endl;
return 0;
}
Move(int i,int j,int u,int t)
{ if(i<j)
{
int aa,bb;
aa=a[i],bb=a[j];
int p=0;
if(0==u) p=a[i] + a[j];
else if(1==u) p=a[i] - a[j];
else if(2==u) p=a[i] * a[j];
else if(3==u&&a[j]!=0&&a[i]%a[j]==0) p=a[i]/a[j];
else ;;
b[c][0]=aa;
b[c][1]=bb;
b[c][2]=u;
b[c++][3]=p;
a[i]=p;
p=0;
for(int k=j;k<t-j;k++)
a[k]=a[k+1];
//b[c][0]=a[0];
// b[c][1]=a[1];
// b[c][2]=a[2];
// b[c++][3]=a[3];
t--;
Backtrack(t);
t++;
for(k=t-j-1;k>=j;k--)
a[k+1]=a[k];
c--;
a[j]=bb;
a[i]=aa;
}
else
{
int aa,bb;
aa=a[i],bb=a[j];
int p=0;
if(0==u) p=a[i] + a[j];
else if(1==u) p=a[i] - a[j];
else if(2==u) p=a[i] * a[j];
else if(3==u&&a[j]!=0&&a[i]%a[j]==0&&a[i]/a[j]!=0&&a[j]%a[i]==0) p=a[i]/a[j];
else ;;
b[c][0]=aa;
b[c][1]=bb;
b[c][2]=u;
b[c++][3]=p;
a[j]=p;
p=0;
for(int k=i;k<t-i;k++) a[k]=a[k+1];
//b[c][0]=a[0];
//// b[c][1]=a[1];
// b[c][2]=a[2];
// b[c++][3]=a[3];
t--;
Backtrack(t);
t++;
for(k=t-i-1;k>=i;k--) a[k+1]=a[k];
c--;
a[j]=bb;
a[i]=aa;
}
}
Backtrack(int t)
{
if(t==1&&a[0]==24)
{for(int in=0;in<3;in++)
{ cout<<b[in][0];
if(b[in][2]==0) cout<<"+";
else if(b[in][2]==1) cout<<"-";
else if(b[in][2]==2) cout<<"*";
else if(b[in][2]==3) cout<<"/";
else ;
cout<<b[in][1]<<"="<<b[in][3]<<" ";
}
cout<<endl;
qq++;
}
else
{
for(int i=0;i<t;i++)
{
for(int j=0;j<t;j++)
{ if(i!=j)
{
for(int u=0;u<=3;u++)
{
Move(i,j,u,t);
}
}
}
}
}
}
- 1
- 2
前往页