📄 24.cpp
字号:
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const double PE = 1e-6;
const int RESULT = 24;
const int COUNT = 4;
double number[COUNT];
string expression[COUNT];
bool Test(int n)
{
if(n == 1)
{
if(fabs(RESULT - number[0]) < PE)
{
cout << expression[0] << endl;
return true;
}
else
return false;
}
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 = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '('+expa+'+'+expb+')';
number[i] = a + b;
if(Test(n-1))
return true;
expression[i] = '('+expa+'-'+expb+')';
number[i] = a - b;
if(Test(n-1))
return true;
expression[i] = '('+expb+'-'+expa+')';
number[i] = b - a;
if(Test(n-1))
return true;
expression[i] = '('+expa+'*'+expb+')';
number[i] = a * b;
if(Test(n-1))
return true;
if(b>0.000001 || b<-0.000001)
{
expression[i] = '('+expa+'/'+expb+')';
number[i] = a / b;
if(Test(n-1))
return true;
}
if(a>0.000001 || a<-0.000001)
{
expression[i] = '('+expb+'/'+expa+')';
number[i] = b / a;
if(Test(n-1))
return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
int main()
{
cout << "Please enter " << COUNT << " numbers" << endl;
for(int i = 0; i < COUNT; i++)
{
int x;
char buffer[20];
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if(Test(COUNT))
cout << "Success!" << endl;
else
cout << "Fail!" << endl;
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -