题解 | #24点游戏算法#

24点游戏算法

https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb

#include <iostream>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
double a[4]={0};
string flag="false";
void dfs(double num,string use){
    if(num==24){//为什么不加上条件use=="1111",题目没说清楚,但实测发现4个数字不一定要用完
        flag="true";
        return;
    }
    if(use=="1111"){
        return;
    }
    rep(i,4){
        if(use[i]=='0')
        {
            use[i]='1';
            rep(j, 4){//对a[i]分别使用加减乘除
                if(j==0)
                    num+=a[i];
                if(j==1)
                    num-=a[i];
                if(j==2)
                    num*=a[i];
                if(j==3)
                    num/=a[i];
                dfs(num,use);
                //回溯
                if(j==0)
                    num-=a[i];
                if(j==1)
                    num+=a[i];
                if(j==2)
                    num/=a[i];
                if(j==3)
                    num*=a[i];               
            }
            use[i]='0';
        }
    }
    
}
int main() {
    rep(i,4){
        cin>>a[i];
    }
    string use="0000";
    rep(i,4){//初始从4个数字选择一个开始dfs
        use[i]='1';
        dfs(a[i],use);
    }
    cout<<flag;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
09-09 14:10
大三,在字节实习两周,被同学举报,辅导员要求回学校怎么办?
我的代码出BUG了:方案1:找领导说明情况然后请个假,回去一天找辅导员报道,见完面直接溜 。方案2:给辅导员卖惨,卖惨内容为家里没钱有贷款+没钱吃饭+心理抑郁+不想活了+社会险恶(同学举报)+想一si了之,例如:.....。长线规划:你这个同学的行为太恶心了,一定暗中收集你这个同学的错误事迹。比如举报课程设计不是他自己做的、比如以后他要是考公,你去考场门口拉横幅说他***,就说你是他好朋友,拉横幅只是为了开玩笑
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
08-16 10:51
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务