📄 24.cpp
字号:
#include<iostream>
#include<math.h>
using namespace std;
//设置全局变量和常量
double number[4];
const double PRECISION = 1E-6;
//递归计算24
bool calculate(int n)
{
//end
if(n==1)
{
if (fabs(number[0]-24) < PRECISION) return true;
else return false;
}
//递归过程
for(int i = 0; i < n; i++)
{
for(int j = i+1; j < n;j++)
{
double a,b;
a=number[i];
b=number[j];
number[j]=number[n-1];
number[i]=a+b;
if(calculate(n-1))
return true;
//减号有两种情况,a-b与b-a
number[i]=a-b;
if(calculate(n-1))
return true;
number[i]=b-a;
if(calculate(n-1))
return true;
number[i]=a*b;
if(calculate(n-1))
return true;
//除法也有两种情况,a/b与b/a
if(b!=0){
number[i]=a/b;
if(calculate(n-1))
return true;
}
if(a!=0){
number[i]=b/a;
if(calculate(n-1))
return true;
}
//恢复数组
number[i]=a;
number[j]=b;
}
}
return false;
}
int main(){
int i, x;
i = 0;
while (scanf("%d", &x)!=EOF){
if(i < 4){
number[i] = x;
i++;
} //保存输入的数据到number
if ( i == 4 ){
if(calculate(4))
cout << "yes" << endl;
else
cout << "no" << endl;
i = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -