华为OJ题目 配置文件恢复

描述

有6条配置命令,它们执行的结果分别是:

命   令执   行
resetreset what
reset boardboard fault
board addwhere to add
board deletno board at all
reboot backplaneimpossible
backplane abortinstall first
he heunkown command

 注意:he he不是命令。

为了简化输入,方便用户,以“最短唯一匹配原则”匹配:
1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;
2、若只输入一字串,但本条命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne,但是该命令有两个关键词,所有匹配失败,执行结果为:unkown command
3、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果仍不唯一,匹配失败。例如输入:r b,找到匹配命令reset board,执行结果为:board fault。

4、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果唯一,匹配成功。例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。
5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:bo a,确定是命令board add,匹配成功。
6、若匹配失败,打印“unkonw command”


知识点 字符串
运行时间限制 0M
内存限制 0
输入

多行字符串,每行字符串一条命令

输出

执行结果,每条命令输出一行

样例输入 reset reset board board add board delet reboot backplane backplane abort
样例输出 reset what board fault where to add no board at all impossible install first
注意:输入空格,和什么都不输入,都要返回unknow command;

代码如下:

#include <iostream>
#include <vector>
using namespace std;
int num(const char a[]){
	int i = 0,count = 1;
	while(a[i] != '\0'){
		if(a[i] == ' '){
		     count++;
		}
		i++;
	}
	return count;
}
bool isok(const char v1[],const char v2[]){
    int i = 0,j = 0;
	while(v2[j] != '\0'){
	     if(v1[i] == '\0')
			 return false;
		 if(v2[j] == ' '){
		     while(v1[i] != ' ')
				 i++;
			 i++;j++;
		 }
		 if(v2[j] == v1[i]){
		     i++;j++;
		 }else{
		     return false;
		 }
	}
	return true;
}
int main()
{
	char mnue[6][25] = {"reset","reset board","board add","board delet","reboot backplane","backplane abort"};
	char in[50][50];
	int i = 0;
	while(cin.getline(in[i],49,'\n') && in[i][0] != '\0'){
	     i++;
	}
	if(i == 0)
        cout << "unkown command" <<endl;
	for(int j = 0;j < i;j++){
		if(num(in[j]) == 1){
		     if(isok(mnue[0],in[j]))
				 cout << "reset what" <<endl;
			 else
                 cout << "unkown command" <<endl; 
		}else if(num(in[j]) == 2){
		     if(isok(mnue[1],in[j]) && !isok(mnue[2],in[j]) && !isok(mnue[3],in[j]) && !isok(mnue[4],in[j]) && !isok(mnue[5],in[j]))
				 cout << "board fault" << endl;
			 else if(!isok(mnue[1],in[j]) && isok(mnue[2],in[j]) && !isok(mnue[3],in[j]) && !isok(mnue[4],in[j]) && !isok(mnue[5],in[j]))
				 cout << "where to add" << endl;
			 else if(!isok(mnue[1],in[j]) && !isok(mnue[2],in[j]) && isok(mnue[3],in[j]) && !isok(mnue[4],in[j]) && !isok(mnue[5],in[j]))
				 cout << "no board at all" << endl;
			 else if(!isok(mnue[1],in[j]) && !isok(mnue[2],in[j]) && !isok(mnue[3],in[j]) && isok(mnue[4],in[j]) && !isok(mnue[5],in[j]))
				 cout << "impossible" << endl;
			 else if(!isok(mnue[1],in[j]) && !isok(mnue[2],in[j]) && !isok(mnue[3],in[j]) && !isok(mnue[4],in[j]) && isok(mnue[5],in[j]))
				 cout << "install first" << endl;
			 else
                 cout << "unkown command" <<endl;
		}
		else{
		    cout << "unkown command" <<endl;
		}
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是华为交换机SSH配置实例步骤: 1. 首先确认你的交换机是否支持SSH,输入命令 display version 可以查看交换机的版本信息。 2. 确认交换机是否存在公钥和密钥,输入命令 display public-key local 和 display rsa local 查看本地公钥和密钥。 3. 配置SSH协议版本,输入命令 ssh version 2 设定SSH协议版本为2。 4. 配置用户认证方式,输入命令 aaa authentication login default local 表示使用本地用户认证。 5. 配置SSH用户,输入命令 user user_name ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAYQD1kz6+L5A3bMzVqJgj1vL5e5z0Q3c8qy9YmzL+2BzG8qA7R3CnKmQ5UyeR8z9Q6hCJ1DgD5wY0l3rOq3sW8Jb3AVZ0oJ2PSYJyN2PqQX2tM+Shw+K7V1BY7S2wU5WkN6jH7gjN4L4rNoeWXBQ3k3LQfVrZoL1jV3va8KltIvN4zgZOzVnXQ== user_email@domain.com,其中user_name为SSH用户名,AAAAB3NzaC1yc2EAAAADAQABAAAAYQD1kz6+L5A3bMzVqJgj1vL5e5z0Q3c8qy9YmzL+2BzG8qA7R3CnKmQ5UyeR8z9Q6hCJ1DgD5wY0l3rOq3sW8Jb3AVZ0oJ2PSYJyN2PqQX2tM+Shw+K7V1BY7S2wU5WkN6jH7gjN4L4rNoeWXBQ3k3LQfVrZoL1jV3va8KltIvN4zgZOzVnXQ==为SSH用户的公钥。 6. 配置SSH服务,输入命令 ssh server enable 启用SSH服务。 7. 最后测试SSH登录,使用SSH客户端连接交换机,并输入SSH用户名和密码即可登录。 注意:在配置SSH协议版本时,如果你的交换机版本较低,则可能只支持SSH协议版本1,此时需要输入命令 ssh version 1 启用SSH协议版本1。但SSH协议版本1已经被证实存在安全漏洞,建议使用SSH协议版本2。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值