LeetCode 679: 24 Game 解题与思考
来源:互联网 发布:飞秋for mac 编辑:程序博客网 时间:2024/06/10 17:47
#LeetCode 679: 24 Game 解题与思考
[原题链接]
题目描述
就是24点啦,给你四个数字,判断能否得出24点
思路
没得讲,直接枚举
看起来真的挺荒谬:不过仔细想想,4个数字全排列24种可能,3个符号64种可能,对称重复除以2,总共也不超过24 × 64 ÷2 = 768种可能;考虑加法和乘法的交换,情况还要更少一点
算法
枚举也没什么算法可言了
代码
#include <iostream>#include <vector>#include <math.h>using namespace std;class Solution { bool jp2(double a, double b) { return (abs(a + b - 24) < 1e-10) || (abs(a - b - 24) < 1e-10) || (abs(a * b - 24) < 1e-10) || (b != 0 && (abs(a / b - 24) < 1e-10)) || (abs(b - a - 24)<1e-10) || (a != 0 && (abs(b / a - 24)<1e-10)); } bool jp3(double a, double b, double c) { return jp2(a + b, c) || jp2(a - b, c) || jp2(a * b, c) || (b != 0 && jp2(a / b, c)) || jp2(b - a, c) || (a != 0 && jp2(b / a, c)) \ || jp2(c + b, a) || jp2(c - b, a) || jp2(c * b, a) || (b != 0 && jp2(c / b, a)) || jp2(b - c, a) || (c != 0 && jp2(b / c, a)) \ || jp2(a + c, b) || jp2(a - c, b) || jp2(a * c, b) || (c != 0 && jp2(a / c, b)) || jp2(c - a, b) || (a != 0 && jp2(c / a, b)); }public: bool judgePoint24(vector<int>& nums) { double a = nums[0], b = nums[1], c = nums[2], d = nums[3]; return jp3(a + b, c, d) || jp3(a - b, c, d) || jp3(a * b, c, d) || (b != 0 && jp3(a / b, c, d)) || jp3(b - a, c, d) || (a != 0 && jp3(b / a, c, d)) \ || jp3(c + b, a, d) || jp3(c - b, a, d) || jp3(c * b, a, d) || (b != 0 && jp3(c / b, a, d)) || jp3(b - c, a, d) || (c != 0 && jp3(b / c, a, d)) \ || jp3(a + c, b, d) || jp3(a - c, b, d) || jp3(a * c, b, d) || (c != 0 && jp3(a / c, b, d)) || jp3(c - a, b, d) || (a != 0 && jp3(c / a, b, d)) \ || jp3(a + d, c, b) || jp3(a - d, c, b) || jp3(a * d, c, b) || (d != 0 && jp3(a / d, c, b)) || jp3(d - a, c, b) || (a != 0 && jp3(d / a, c, b)) \ || jp3(d + b, a, c) || jp3(d - b, a, c) || jp3(d * b, a, c) || (b != 0 && jp3(d / b, a, c)) || jp3(b - d, a, c) || (d != 0 && jp3(b / d, a, c)) \ || jp3(d + c, b, a) || jp3(d - c, b, a) || jp3(d * c, b, a) || (c != 0 && jp3(d / c, b, a)) || jp3(c - d, b, a) || (d != 0 && jp3(c / d, b, a)); }};
思考
一开始我还想着怎么去更快地得到解答,但是想了想反正也不需要给出如何得到24点,只需要判断,所以就枚举了
阅读全文
0 0
- LeetCode 679: 24 Game 解题与思考
- LeetCode 312: Brust Balloon 解题与思考
- LeetCode 514: Freedom Trail 解题与思考
- LeetCode 145:Binary Tree Postorder Traversal 解题与思考
- LeetCode 23:Merge k Sorted Lists 解题与思考
- LeetCode 144: Binary Tree Preorder Traversal 解题与思考
- LeetCode 94: Binary Tree Inorder Traversal 解题与思考
- LeetCode 410: Split Array Largest Sum 解题与思考
- Leetcode Jump Game 解题报告
- 【LeetCode】Jump Game 解题报告
- Dungeon Game | leetcode 解题思路
- LeetCode 解题报告 Dungeon Game
- leetcode [Nim game解题报告]
- [LeetCode] Jump Game 解题报告
- 【LeetCode】Nim Game 解题报告
- LeetCode Game of Life 解题
- 24 game [LeetCode 679]
- Leetcode Jump Game II 解题报告
- 编译caffe和matlab接口问题
- An_MVP_模式(okhttp)解析RecyclerView/XRecyclerView
- 多数据源配置spting-mybatis
- Oc NSXMLParse(SAX)解析分区表格
- echarts相关设置,看注释
- LeetCode 679: 24 Game 解题与思考
- 5
- Oc Json解析 表格
- 第八周项目二——顺序串算法
- 链表问题 删除链表的中间节点和a/b处的节点
- Eigen之矩阵、向量、标量的操作运算
- HTML部分基础总结(1)
- Oc 数据库CoreData
- Java 变量类型