24 Game

来源:互联网 发布:知乎 邮箱注册 编辑:程序博客网 时间:2024/05/22 13:14

You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated through */+-() to get the value of 24.

Example 1:

Input: [4, 1, 8, 7]Output: TrueExplanation: (8-4) * (7-1) = 24

Example 2:

Input: [1, 2, 1, 2]Output: False

Note:

  1. The division operator / represents real division, not integer division. For example, 4 / (1 - 2/3) = 12.
  2. Every operation done is between two numbers. In particular, we cannot use - as a unary operator. For example, with [1, 1, 1, 1] as input, the expression -1 - 1 - 1 - 1 is not allowed.
  3. You cannot concatenate numbers together. For example, if the input is [1, 2, 1, 2], we cannot write this as 12 + 12.


列出四个数的全排列,对每一个排列进行所有可能的运算(三个位置的运算符加减乘除有4*4*4=64种可能,插入括号有6种方式),检查运算结果是否为24。


#include<iostream>#include<vector>#include <cmath>#include <algorithm>using namespace std;class Solution {public:vector<double> operands;    bool judgePoint24(vector<int>& nums) {    for (int i = 0 ;i < 4; i++)    operands.push_back(nums[i]);        for (int i = 0; i < 24; i++) {for (int x = 1; x <= 4; x++)for (int y = 1; y <= 4; y++)for (int z = 1; z <= 4; z++) {double left,middle,right,result;left=compute(x, operands[0], operands[1]);middle=compute(y, operands[1],operands[2]);right=compute(z,operands[2], operands[3]);result=compute(y,left,operands[2]);result=compute(z,result,operands[3]);if (fabs(result-24)<0.001) return true;//a?b?c?dresult=compute(y, left,right);if (fabs(result-24)<0.001) return true;//(a?b)?(c?d)result=compute(x, operands[0], middle);result=compute(z, result, operands[3]);//(a?(b?c))?dif (fabs(result-24)<0.001) return true;result=compute(z, middle,operands[3]);                result=compute(x, operands[0],result);//a?((b?c)?d)                if (fabs(result-24)<0.001) return true;result= compute(y,left,right);if (fabs(result-24)<0.001) return true;//a?b?(c?d)result=compute(y,operands[1],right);result=compute(x,operands[0],result);if (fabs(result-24)<0.001) return true;//a?(b?(c?d))}next_permutation(operands.begin(),operands.end());}return false;    }double compute(int oper, double & a, double& b) {if (oper==1) return a+b;if (oper==2) return a-b;if (oper==3) return a*b;if (oper==4) {if (b==0) return 0; return a/b;}}};


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机一不小心把视频删了怎么办 柑橘7月份果实小怎么办 鹦鹉鱼身上有小白点怎么办 鹦鹉鱼身上烂了怎么办 红鹦鹉鱼变黑了怎么办 唱美声总夹嗓子怎么办 发财树树干出褶怎么办 月季花夏天换盆出现黄叶怎么办 刚种的月季枯了怎么办 新买的月季黄叶了怎么办 月季花叶孑轰发黄怎么办? 新种的月季苗弱怎么办? 月季换盆后浇透水叶子黄了怎么办 肉肉移栽后浇透水怎么办 月季花扦插的没长根发芽了怎么办 君子兰发的小苗怎么办 蔷薇光长枝条不开花怎么办 牡丹发芽又干了怎么办 擦皮炎平后皮肤变黑怎么办 误喝发霉的咖啡渣怎么办 狗吃了速溶咖啡怎么办 咖啡机放豆的地方进水怎么办 干吃咖啡粉上瘾怎么办 去良友花艺住宿怎么办 充气娃娃放了气怎么办 煮杜鹃根没有锅怎么办 淘宝店卖鲜花被买家拒收货怎么办 执业医师电子注册忘记密码怎么办 怀孕吃了油炸的怎么办 百合长得太高怎么办 百合的杆没了怎么办 百合花长得太细怎么办 沙漠玫瑰的花苞打不开怎么办 鲜切花 较小的花苞怎么办 大棚玫瑰苗水大涝的不长怎么办 鲜花买回来蔫了怎么办 喝玫瑰醋上火了怎么办 插在花泥上的花怎么办 插的花蔫了怎么办 紫睡莲的茎软了怎么办 家养的荷花烂叶怎么办