LINTCODE——Compute 24 Game
2017-12-16 21:42
218 查看
LINTCODE——Compute 24 Game
题目:给你一个由4个数字组成的数组,判断这4个数能否通过*, /, +, -, (, ) ,计算得到24;
思路:刚开始我想错了,以为只能再4个数中间添加运算符,结果题目是可以调换数组顺序的,修改之后依次遍历数组的情况,用next_permutation函数遍历,出现一个能计算得24立马结束程序;
题目:给你一个由4个数字组成的数组,判断这4个数能否通过*, /, +, -, (, ) ,计算得到24;
思路:刚开始我想错了,以为只能再4个数中间添加运算符,结果题目是可以调换数组顺序的,修改之后依次遍历数组的情况,用next_permutation函数遍历,出现一个能计算得24立马结束程序;
class Solution { public: /** * @param nums: 4 cards * @return: whether they could get the value of 24 */ bool compute24(vector<double>& nums) { //进行排序,从小到大 sort(nums.begin(), nums.end()); do { if (valid(nums)) return true; } while(next_permutation(nums.begin(), nums.end())); //next_permutation输出比当前序列大的数列 return false; } bool valid(vector<double>& nums) { double a = nums[0], b = nums[1], c = nums[2], d = nums[3]; //暴力美学,强势破解;以下同理 if (valid(a+b, c, d) || valid(a-b, c, d) || valid(a*b, c, d) || valid(a/b, c, d)) return true; if (valid(a, b+c, d) || valid(a, b-c, d) || valid(a, b*c, d) || valid(a, b/c, d)) return true; if (valid(a, b, c+d) || valid(a, b, c-d) || valid(a, b, c*d) || valid(a, b, c/d)) return true; return false; } bool valid(double a, double b, double c) { if (valid(a+b, c) || valid(a-b, c) || valid(a*b, c) || b&&valid(a/b, c)) return true; if (valid(a, b+c) || valid(a, b-c) || valid(a, b*c) || c&&valid(a, b/c)) return true; return false; } bool valid(double a, double 9254 b) { if (abs(a+b-24.0) < 0.0001 || abs(a-b-24.0) < 0.0001 || abs(a*b-24.0) < 0.0001 || b&&abs(a/b-24.0) < 0.0001) return true; return false; } };
相关文章推荐
- lintcode-24-LFU缓存
- lintcode:Guess Number Game
- LintCode Jump Game 跳跃游戏
- LintCode Jump Game 跳跃游戏
- Lintcode 24 LFU缓存
- Educational Codeforces Round 24 (B Permutation Game,D. Multicolored Cars)
- lintcode Guess Number Game II
- Educational Codeforces Round 24 B. Permutation Game
- Google/LintCode:E-Guess Number Game
- 24 Game CodeForces - 468A
- lintcode(666)Guess Number Game II
- Codeforces Round 469 C 24 Game
- lintcode Guess Number Game(Java)
- lintcode/leetcode由易至难第9题:Nim Game
- Educational Codeforces Round 24 E. Card Game Again(双指针)
- LintCode A+B问题
- 【构造】 Codeforces 468A 24 Game
- cf468A 24 Game
- lintcode--摊平嵌套的列表
- LintCode--买卖股票的最佳时机