1705 浩神的电脑

1705 题目地址

思路分析:首先应该把8种安全软件存放在一个字符串数组当中。对于输入,分为两个字符串:分别是指令和软件。
这里我们要用到map<string,bool>,用来标记这个软件是否已经下载
当指令s是下载软件时,输入软件名,然后查看map[s]的值,如果是0,则下载;如果是1,则闭嘴。
当指令s是卸载软件时,输入软件名,然后查看map[s]的值,如果是
0,则输出找不到;如果是1,则卸载该软件。
最后一种情况当指令s是Query时,需要遍历8种软件是否都已经下载在电脑里面(即使得map[si]==1).,注意这里是mp[str[i]].。考虑到只要有一个软件没有在电脑,则立即报出不安全状态,则设置一个标记,查询到任一软件不存在时,则立即中断,视为不安全状态。当且仅当都在时,状态安全。

代码:

#include <bits/stdc++.h>

using namespace std;

map <string,bool> mp;

int main()
{
    string str[8]= {"360SAFE","360BROWSER","QQGUARD","360SD","360DESKTOP","360YASUO","360WD",
                    "360SAFEBOX"
                   };
    int n;
    while(cin>>n)
    {
        mp.clear();
        while(n--)
        {
            string s1,s2;
            cin>>s1;
            if(s1=="Install")
            {
                cin>>s2;
                if(!mp[s2])
                {
                    mp[s2]=1;
                    cout<<"The software has been installed!"<<endl;
                }
            }
            else if(s1=="Uninstall")
            {
                cin>>s2;
                if(mp[s2]) //如果卸载的软件已经在电脑
                {
                    mp[s2]=0;//卸载置零
                    cout<<"The software has been uninstalled!"<<endl;
                }
                else
                {
                    cout<<"The software is not found!"<<endl;
                }
            }
            else if(s1=="Query")
            {
                int f=1;
                for(int i=0; i<8; i++)
                {
                    if(!mp[str[i]])
                    {
                        f=0;
                        break;
                    }
                }
                if(f)
                    cout<<"Your computer is secure!"<<endl;
                else
                    cout<<"Your computer is not secure!"<<endl;

            }
        }
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值