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

全部评论

相关推荐

Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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