题解 | #24点运算#

24点运算

https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

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

string path;

unordered_map<string, int> mp{{"3",3},{"4",4},{"5",5},{"6",6},{"7",7},{"8",8},{"9",9},{"10",10},{"J",11},{"Q",12},{"K",13},{"A",1},{"2",2},{"joker",-1},{"JOKER",-1}};

unordered_map<int, string> mp1{{3,"3"},{4,"4"},{5,"5"},{6,"6"},{7,"7"},{8,"8"},{9,"9"},{10,"10"},{11,"J"},{12,"Q"},{13,"K"},{1,"A"},{2,"2"},{-1,"joker"},{-1,"JOKER"}};

bool dfs(vector<int> num,int sum){
    if(num.empty())
        return sum==24;
    for(int i=0;i<num.size();++i){
        vector<int> temp(num);
        temp.erase(i+temp.begin());
        int len=path.size();
        if(num.size()==4){
            path+=mp1[num[i]];
            if(dfs(temp,num[i]))
                return true;
            path=path.substr(0,len);
        }
        else{
        path+=mp1[num[i]];
        path.insert(path.begin()+len,'+');
        if(dfs(temp,sum+num[i]))
            return true;
        path.erase(path.begin()+len);
        path.insert(path.begin()+len,'-');
        if(dfs(temp,sum-num[i]))
            return true;
        path.erase(path.begin()+len);
        path.insert(path.begin()+len,'*');
        if(dfs(temp,sum*num[i]))
            return true;
        path.erase(path.begin()+len);
        path.insert(path.begin()+len,'/');
        if(dfs(temp,sum/num[i]))
            return true;
        path.erase(path.begin()+len);
        path=path.substr(0,len);
        }
    }
    return false;

}

int main() {
    vector<int> num(4);
    bool valid=true;
    for(int i=0;i<4;++i){
        string s;
        cin >> s;
        num[i]=mp[s];
        if(num[i]==-1)
            valid=false;
    }
    if(!valid)
        cout << "ERROR";
    else{
        if(dfs(num,0))
            cout << path.substr();
        else
            cout << "NONE";

    }

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

全部评论

相关推荐

09-18 12:13
已编辑
门头沟学院 产品经理
火猴大圣:不要委屈自己,进去看一看 。。。 这样你才能彻底死心
点赞 评论 收藏
分享
珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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