問(wèn)題描述:見(jiàn)下圖

程序代碼:
/* *輸入:輸入數(shù)據(jù)包括4個(gè)小于10的整數(shù)。 輸出:對(duì)于如果可以得到24,輸出“YES”;否則輸出“NO” */ #include <iostream> #include <cmath> using namespace std; double a[5]; #define EPS 1e-6 bool isZero(double x)//判斷浮點(diǎn)數(shù)是否小于零 { return fabs(x) <= EPS; } bool count24(double a[],int n) {//用數(shù)組a中的n個(gè)數(shù),計(jì)算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)//枚舉兩個(gè)數(shù)的組合 { int m=0;//還剩下m個(gè)數(shù),m=n-2 for(int k =0; k<n;++k) if(k!=i && k!=j) b[m++] = a[k];//把其余數(shù)放入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; }運(yùn)行結(jié)果:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注