题解 | #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 收藏 评论
分享
牛客网
牛客企业服务