题解 | #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 山东

相关推荐

点赞 评论 收藏
分享
想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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