题解 | #24点游戏算法#

24点游戏算法

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

#include <bits/stdc++.h>
using namespace std;
char operation[4] = { '+','-','*','/' };
bool vis[4];
//这个题目并没有限制使用括号以及数字顺序可以改变
double num[4];
bool dfs(double cur,int idx) {
    if (cur == 24 && idx == 4)
        return true;
    for (int i = 0; i < 4; i++) {//用vis数组来判别是否被使用过
        if(vis[i]==false){
            vis[i]=true;
            if (dfs(cur + num[i], idx + 1) || dfs(cur - num[i], idx + 1) || dfs(cur * num[i], idx + 1) || dfs(cur / num[i], idx + 1))
                return true;
            vis[i]=false;
        }
    }
    return false;
}
int main() {
    while (cin >> num[0] >> num[1] >> num[2] >> num[3]) {
        memset(vis,0,sizeof(vis));
        if (dfs(0,0))
            cout << "true" << endl;
        else
            cout << "false" << endl;
    }

}
全部评论
这个不对吧,要是只能通过乘除法得到24,那不就一直为0了吗?
点赞 回复 分享
发布于 2023-09-11 10:17 山东

相关推荐

07-08 13:48
门头沟学院 C++
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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