(nice!!!)(LeetCode 每日一题) 679. 24 点游戏 (深度优先搜索)

题目:679. 24 点游戏


思路:深度优先搜索dfs,时间复杂度0(n! * 6^n)。

从cards里选两个数,然后枚举所有情况,一共6种,继续dfs,直到cards数量为1。

C++版本:

cpp 复制代码
class Solution {
public:
    const double wc=1e-9;
    bool dfs(vector<double> v){
    	// 数量为1,判断该数是否为24
        if(v.size()==1){
        	// 误差小于wc,说明是24
            return abs(v[0]-24)<wc;
        }
        int n=v.size();
        // 枚举cards里的两位数
        for(int i=0;i<n;i++){
            double x=v[i];
            for(int j=i+1;j<n;j++){
                double y=v[j];
                // 可能进行的操作
                vector<double> f={x+y,x-y,y-x,x*y};
                // 分母不为0
                if(x>wc){
                    f.push_back(y/x);
                }
                if(y>wc){
                    f.push_back(x/y);
                }
                auto new_v=v;
                new_v.erase(new_v.begin()+j);
                // 遍历可能进行的操作
                for(auto z:f){
                    new_v[i]=z;
                    if(dfs(new_v)){
                        return true;
                    }
                }
            }
        }
        return false;
    }

    bool judgePoint24(vector<int>& cards) {
        vector<double> v(cards.begin(),cards.end());
        return dfs(v);
    }
};
相关推荐
小bo波12 小时前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
任沫14 小时前
Agent之Function Call
javascript·人工智能·go
XIAOHEZIcode21 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
唐青枫1 天前
别再把 interface 当万能盒子:Go 接口从隐式实现到项目解耦
go
nanxun8862 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103512 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师2 天前
Maven dependency:tree 的 8 个高级用法
java·后端
Aloys_Code2 天前
逆向一个被遗忘的DVD游戏格式:从DES加密到Rust模拟器
游戏·模拟器·retroarch·复古游戏·native32·sunplus·赤刃·钢铁风暴
行者全栈架构师2 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_02 天前
mac(m5)平台编译openjdk
java