题解 | #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")

全部评论

相关推荐

头像
02-15 16:23
中南大学 Java
野猪不是猪🐗:签了美团真是不一样! 亲戚们都知道我签了美团,过年都围着我问送一单多少钱,还让弟弟妹妹们引以为戒,笑我爸我妈养了个🐢孩子,说从小就知道我这个人以后肯定没出息,我被骂的都快上天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务