栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

华为机试题---HJ66 配置文件恢复

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

华为机试题---HJ66 配置文件恢复

leetcode写久了有点累,换个ACM来写一下~

 

 

#include
#include
#include
using namespace std;
string s;
string s1 = "reset";
string c1 = "board";
string c2 = "backplane";
string s2 = "board";
string s3 = "reboot";
string s4= "backplane";
string d1 = "add";
string d2 = "delete";
string d3 = "abort";
int main()
{
    while (getline(cin, s))
    {
        if (s[0] == 'r')
        {
            if (s.find(' ') != -1)//两个字符
            {
                string front_s = s.substr(0, s.find(' '));
                string back_s = s.substr(s.find(' ') + 1, s.size() - s.find(' ') - 1);
                bool flag1 = false;
                bool flag2 = false;
                bool flag3 = false;
                bool flag4 = false;

                if (s1.find(front_s) != -1)flag1 = true;
                if (s3.find(front_s) != -1)flag2 = true; 
                if (flag1 && !flag2)
                {
                    for (int i = 0; i < back_s.size(); i++)
                    {
                        if (back_s[i] == c1[i])flag3 = true;
                        else {
                            flag3 = false; break;
                        }
                    }
                    if (flag3)//1.两个都匹配成功
                        cout << "board fault" << endl;
                    else //2.第一个匹配成功,第二个匹配不成功
                        cout << "unknown command" << endl;
                }
                else if (!flag1 && flag2)
                {
                    for (int i = 0; i < back_s.size(); i++)
                    {
                        if (back_s[i] == c2[i])flag4 = true;
                        else {
                            flag4 = false; break;
                        }
                    }
                    if(flag4)//1.两个都匹配成功
                        cout << "impossible" << endl;
                    else //2.第一个匹配成功,第二个匹配不成功
                        cout << "unknown command" << endl;
                }
                //3.第一个匹配不成功
                //4.两个匹配重复
                else
                    cout << "unknown command" << endl;  
            }
            else //一个字符
            {
                if (s == "reb") cout << "unknown command" << endl;
                else if (s1.find(s) != -1)
                    cout << "reset what" << endl;
                else if (s3.find(s) != -1)
                    cout << "impossible" << endl;
            }
        }
        else if (s[0] == 'b')
        {
            if (s.find(' ') != -1)//两个字符
            {
                string front_s = s.substr(0, s.find(' '));
                string back_s = s.substr(s.find(' ') + 1, s.size() - s.find(' ') - 1);
                bool flag1 = false;
                bool flag2 = false;
                bool flag3 = false;
                bool flag4 = false;
                bool flag5 = false;
                if (s2.find(front_s) != -1)flag1 = true;
                if (s4.find(front_s) != -1)flag2 = true;
                if (flag1 && !flag2)
                {
                    for (int i = 0; i < back_s.size(); i++)
                    {
                        if (back_s[i] == d1[i])flag3 = true;
                        else {
                            flag3 = false; break;
                        }
                    }
                    if(flag3)//1.两个都匹配成功
                        cout << "where to add" << endl;
                    else
                    {
                        for (int i = 0; i < back_s.size(); i++)
                        {
                            if (back_s[i] == d2[i])flag4 = true;
                            else {
                                flag4 = false; break;
                            }
                        }
                        if(flag4)//1.两个都匹配成功
                            cout << "no board at all" << endl;
                        else//2.第一个匹配成功,第二个匹配不成功
                            cout << "unknown command" << endl;
                    }        
                }
                else if (!flag1 && flag2)
                {
                    for (int i = 0; i < back_s.size(); i++)
                    {
                        if (back_s[i] == d3[i])flag5 = true;
                        else flag5 = false;
                    }
                    if (flag5)//1.两个都匹配成功
                        cout << "install first" << endl;
                    else//2.第一个匹配成功,第二个匹配不成功
                        cout << "unknown command" << endl;
                } 
                //3.第一个匹配不成功
                //4.两个匹配重复
                else
                    cout << "unknown command" << endl;
            }
            else //一个字符
            {
                if (s4.find(s) != -1&&s2.find(s)==-1)
                    cout << "install first" << endl;
                else 
                    cout << "unknown command" << endl;
            }
        }
        else
            cout << "unknown command" << endl;
    }
    return 0;
}

题目理解了就不难,就是写起来麻烦~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号