问题描述:见下图
程序代码:
/* *输入:输入数据包括4个小于10的整数。 输出:对于如果可以得到24,输出“YES”;否则输出“NO” */ #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) {//用数组a中的n个数,计算24 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; b[m] = a[i] - a[j]; if(count24(b,m+1)) return true; b[m] = a[j] - a[i]; if(count24(b,m+1)) return true; b[m] = a[i] * a[j]; if(count24(b,m+1)) return true; if( !isZero(a[j])) { b[m] = a[i]/a[j]; if(count24(b,m+1)) return true; } if( !isZero(a[i])) { b[m] = a[j]/a[i]; if(count24(b,m+1)) return true; } } return false; } int main() { double a[5]; for(int i=0;i<4;i++) cin>>a[i]; bool flag = count24(a,4); if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }运行结果:
新闻热点
疑难解答