#include <iostream>
#include <string>
#include <math.h>
#include"time.h" /*需引用的头文件*/
using namespace std;
const double LING = 1E-6;
const int CONT = 4;
const int VOLUE = 24;
double number[CONT];
string biaodashi[CONT];
bool Panduan = false; //判断是否有解。
int count = 0;
void Chazhao(int n)
{
if (n == 1)
{
if ( fabs(number[0] - VOLUE) <= LING )
{
cout << biaodashi[0] << "\t\t";
Panduan = true;
count ++;
if((count % 3)==0) //使输出时每行三个表达式
cout<<endl;
}
else
{ }
}
for(int i=0; i < n; i++)//查找
{
for (int j = i + 1; j < n; j++)//与其后面的查找进行计算
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = biaodashi[i];
expb = biaodashi[j];
biaodashi[j] = biaodashi[n - 1];
biaodashi[i]= '('+ expa + '+' + expb + ')';
number[i] = a + b;
Chazhao(n-1);
biaodashi[i]='('+ expa+ '-' + expb + ')';
number[i] = a - b;
Chazhao(n-1);
biaodashi[i] = '('+expb + '-' + expa + ')';
number[i] = b -a;
Chazhao(n-1);
biaodashi[i]= '('+ expa +'*'+ expb+ ')';
number[i]=a*b;
Chazhao(n-1);
if (b != 0)
{
biaodashi[i] ='('+expa+'/' + expb + ')';
number[i] = a / b;
Chazhao(n-1);
}
if (a != 0)
{
biaodashi[i]='('+expb + '/'+ expa + ')';
number[i] = b / a;
Chazhao(n-1);
}
number[i] =a;
number[j]=b;
biaodashi[i] = expa;
biaodashi[j] = expb;
}
}
}
int main()
{
int X=1,Y=13;
srand((unsigned)time(NULL)); /*随机种子*/
{
}
cout<<endl;
Chazhao(CONT) ;
if(Panduan==true)
{
cout << "\n成功!" << endl;
cout<<"总共的计算方法共有: "<<count<<endl;
}
else
{
cout << "失败!" << endl;
}
return 0;
}
#include <string>
#include <math.h>
#include"time.h" /*需引用的头文件*/
using namespace std;
const double LING = 1E-6;
const int CONT = 4;
const int VOLUE = 24;
double number[CONT];
string biaodashi[CONT];
bool Panduan = false; //判断是否有解。
int count = 0;
void Chazhao(int n)
{
if (n == 1)
{
if ( fabs(number[0] - VOLUE) <= LING )
{
cout << biaodashi[0] << "\t\t";
Panduan = true;
count ++;
if((count % 3)==0) //使输出时每行三个表达式
cout<<endl;
}
else
{ }
}
for(int i=0; i < n; i++)//查找
{
for (int j = i + 1; j < n; j++)//与其后面的查找进行计算
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = biaodashi[i];
expb = biaodashi[j];
biaodashi[j] = biaodashi[n - 1];
biaodashi[i]= '('+ expa + '+' + expb + ')';
number[i] = a + b;
Chazhao(n-1);
biaodashi[i]='('+ expa+ '-' + expb + ')';
number[i] = a - b;
Chazhao(n-1);
biaodashi[i] = '('+expb + '-' + expa + ')';
number[i] = b -a;
Chazhao(n-1);
biaodashi[i]= '('+ expa +'*'+ expb+ ')';
number[i]=a*b;
Chazhao(n-1);
if (b != 0)
{
biaodashi[i] ='('+expa+'/' + expb + ')';
number[i] = a / b;
Chazhao(n-1);
}
if (a != 0)
{
biaodashi[i]='('+expb + '/'+ expa + ')';
number[i] = b / a;
Chazhao(n-1);
}
number[i] =a;
number[j]=b;
biaodashi[i] = expa;
biaodashi[j] = expb;
}
}
}
int main()
{
int X=1,Y=13;
srand((unsigned)time(NULL)); /*随机种子*/
cout<<"随机产生四个数"<<endl;
{
char ch[20];
number[i]=rand()%(Y-X+1)+X;
cout<<number[i]<<" ";
itoa(number[i],ch, 10); //itoa()函数的作用是把第一个参数(数值)传送(转换)到第二个参数(字符串)中去,第三个参数(int型)是该数值在字符串里以什么进制存放。
}
cout<<endl;
Chazhao(CONT) ;
if(Panduan==true)
{
cout << "\n成功!" << endl;
cout<<"总共的计算方法共有: "<<count<<endl;
}
else
{
cout << "失败!" << endl;
}
return 0;
}