小tips:
浮点数比较大小,不能用==,而是应该浮点数的差是否小于某个很小的数
#include<iostream>
#include<cmath>
using namespace std;
double a[5];
#define EPS 1e-6
bool isZero(double x)
{
return fabs(x)<=EPS; //浮点数取绝对值
}
bool count24(double a[],int n)
{
if(n==1)
{
if(isZero(a[0]-24))
return true;
else
return false;
}
}
double b[5];
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++) //枚举两个数的组合
{
int m=0; //还剩下m个数,m=n-2
for(int k=0;k<n;k++)
{
if(k!=i&&k!j)
b[m++]=a[k];//把剩余数放入b
}
b[m]=a[i]+a[j];
if(count24(b,m+1))
return true;
}
}