24点游戏

来源:互联网 发布:淘宝买游戏账号安全吗 编辑:程序博客网 时间:2024/05/28 15:59

// code.cpp : 定义控制台应用程序的入口点。    // editor: Visual C++ 2010 Ultimate    // system: win7 x32// create: 2013-08-02 10:46AM    // author: starfish(海星)// remark: 转载自大神的文章片段,提交pongo需修改#include "stdafx.h"#include <iostream>#include <string>#include <cmath>using namespace std;const double PRECISION = 1E-6;const int COUNT_OF_NUMBER = 4;const int NUMBER_TO_CAL = 24;double number[COUNT_OF_NUMBER];string expression[COUNT_OF_NUMBER];bool Search(int n);int _tmain(int argc, _TCHAR* argv[]){for(int i=0;i<COUNT_OF_NUMBER; i++){char buffer[20];int x;cin>>x;number[i] = x;itoa(x, buffer, 10);expression[i] = buffer;}if(Search(COUNT_OF_NUMBER)){cout<< "SUCCESS" <<endl;} else {cout<< "FAILURE" <<endl;}system("pause");return 0;}bool Search(int n){if(n==1){if(fabs(number[0]-NUMBER_TO_CAL)<PRECISION){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(Search(n-1)) return true;expression[i] = '(' + expa + '-' + expb + ')';number[i] = a - b;if(Search(n-1)) return true;expression[i] = '(' + expb + '-' + expa + ')';number[i] = b - a;if(Search(n-1)) return true;expression[i] = '(' + expa + '*' + expb + ')';number[i] = a * b;if(Search(n-1)) return true;if(b!=0){expression[i] = '(' + expa + '/' + expb + ')';number[i] = a / b;if(Search(n-1)) return true;//-- 算分数24点 jkj --//expression[i] = '(' + expb + '/' + expa + ')';number[i] = b / a;if(Search(n-1)) return true;}number[i] = a;number[j] = b;expression[i] = expa;expression[j] = expb;}}return false;}

原创粉丝点击