题解 | #24点游戏算法#

24点游戏算法

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

#include <iostream>
#include <vector>
using namespace std;

bool bp(vector<double> vec, vector<bool>& used, double result, int count){
    if (count == 4 && result == 24)
        return true;
    for (int i = 0; i < 4; i++){
        if (used[i])
            continue;
        used[i] = true;
        if (count == 0){
            if (bp(vec, used, result + vec[i], count + 1))
                return true;
        }
        else if (bp(vec, used, result + vec[i], count + 1) 
                || bp(vec, used, result - vec[i], count + 1) 
                || bp(vec, used, result * vec[i], count + 1) 
                || bp(vec, used, result / vec[i], count + 1))
                    return true;
        used[i] = false;
    }
    return false;
}
int main() {
    int n;
    vector<double> vec;
    while (cin>>n){
        vec.push_back(n);
    }

    vector<bool> used(4, false);
    if (bp(vec,used, 0, 0))
        cout << "true";
    else
        cout << "false";

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

会考什么呀?硬件岗
投递大疆等公司10个岗位
点赞 评论 收藏
分享
头像
07-24 13:05
已编辑
西南大学 Java
点赞 评论 收藏
分享
07-24 03:49
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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