#屎山代码#配置文件恢复#时空复杂度o(n)/o(1)

配置文件恢复

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

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

unordered_map<string,int> reset;
unordered_map<string,int> board;
unordered_map<string,int> reboot;
unordered_map<string,int> backplane;
unordered_map<string,int> add;
unordered_map<string,int> Delete;
unordered_map<string,int> Abort;

vector<string> split(string order){
    vector<string> order_list;
    if(order[0]!='r'&&order[0]!='b') return order_list;
    string temp;
    int length = order.length();
    for(int i=0;i<length;i++){
        if(order[i]!=' ') temp.push_back(order[i]);
        else{
            if(i==length-1||(order[i+1]!='b'&&order[i+1]!='a'&&order[i+1]!='d')){
                order_list.clear();
                return order_list;
        }
            else{
                order_list.push_back(temp);
                temp.clear();
            }
        }
    }
    order_list.push_back(temp);
    return order_list;
}

string process(string order){
    vector<string> order_list = split(order);
    if(order_list.size()==1){
        string s1 = order_list[0];
        if(reset.find(s1)!=reset.end()) return "reset what";
        else return "unknown command";
    }
    else if(order_list.size()==2){
        string s1 = order_list[0],s2 = order_list[1];
        if(board.find(s1)!=board.end()&&Delete.find(s2)!=Delete.end()) return "no board at all";
        else if(reset.find(s1)!=reset.end()&&board.find(s2)!=board.end()){
            if(reboot.find(s1)==reboot.end()||(reboot.find(s1)!=reboot.end()&&backplane.find(s2)==backplane.end())) return "board fault";
            else return "unknown command";
        }
        else if(board.find(s1)!=board.end()&&add.find(s1)!=add.find(s2)){
            if(backplane.find(s1)==backplane.end()||(backplane.find(s1)!=backplane.end()&&Abort.find(s2)==Abort.end())) return "where to add";
            else return "unknown command";
        }
        else if(reboot.find(s1)!=reboot.end()&&backplane.find(s2)!=backplane.end()){
            if(reset.find(s1)==reset.end()||(reset.find(s1)!=reset.end()&&board.find(s2)==board.end())) return "impossible";
            else return "unknown command";
        }
        else if(backplane.find(s1)!=backplane.end()&&Abort.find(s2)!=Abort.end()){
            if(board.find(s1)==board.end()||(board.find(s1)!=board.end()&&add.find(s2)==add.end())) return "install first";
            else return "unknown command";
        }
        else return "unknown command";
    }
    else{
        return "unknown command";
    }
}
int main() {
    string order;
    string s1="reset",s2="board",s3="reboot",s4="backplane",s5="add",s6="delete",s7="abort";
    for(int i=1;i<=5;i++){reset.insert(make_pair(s1.substr(0,i),1));}
    for(int i=1;i<=5;i++){board.insert(make_pair(s2.substr(0,i),1));}
    for(int i=1;i<=6;i++){reboot.insert(make_pair(s3.substr(0,i),1));}
    for(int i=1;i<=9;i++){backplane.insert(make_pair(s4.substr(0,i),1));}
    for(int i=1;i<=3;i++){add.insert(make_pair(s5.substr(0,i),1));}
    for(int i=1;i<=6;i++){Delete.insert(make_pair(s6.substr(0,i),1));}
    for(int i=1;i<=5;i++){Abort.insert(make_pair(s7.substr(0,i),1));}
    while (getline(cin,order)) {
        cout<<process(order)<<endl;
    }
    return 0;
}

全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务