[華為機試練習題]44.24點遊戲演算法,華為44.24
題目
注意: 6 + 2 * 4 + 10 = 24 不是一個數字一個數位計算
代碼
/*---------------------------------------* 日期:2015-07-03* 作者:SJF0115* 題目:24點遊戲演算法* 來源:華為機試練習題-----------------------------------------*/#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;// 迭代 類比各種組合void helper(vector<int> &num,int index,int result,bool &isSucess){ if(index == 4){ if(result == 24){ isSucess = true; }//if return; }//if for(int i = 0;i < 4;++i){ if(i == 0){ //op.push_back('+'); helper(num,index+1,result+num[index],isSucess); }//if else if(i == 1){ //op.push_back('-'); helper(num,index+1,result-num[index],isSucess); }//else else if(i == 2){ //op.push_back('*'); helper(num,index+1,result*num[index],isSucess); }//else else{ //op.push_back('/'); helper(num,index+1,result/num[index],isSucess); }//else //op.pop_back(); // 找到解決方案 if(isSucess){ break; }//if }//for}bool Game24Points(int a, int b, int c, int d){ vector<int> num; num.push_back(a); num.push_back(b); num.push_back(c); num.push_back(d); bool isSucess = false; helper(num,1,num[0],isSucess); if(isSucess){ return isSucess; }//if // 全排列 主要應對 6 + 2 * 4 + 10 = 24 while(next_permutation(num.begin(),num.end())){ helper(num,1,num[0],isSucess); if(isSucess){ return isSucess; }//if }//while return isSucess;}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。