AlgoMooc
← 返回题库

X4056. 小慕的网络守护系统

困难通过率 44% · 提交 9 · 通过 4
模拟字符串哈希表链表

小慕正在开发一个简化版的网络访问控制系统,用于管理哪些IP地址可以访问他的服务器。系统支持多个,每条规则链包含若干条访问控制规则。当收到网络数据包时,系统会根据配置的规则决定是否允许该数据包通过。 请你帮小慕实现这个系统,给定一系列规则操作命令和查询命令,依次输出每条查询命令的IP匹配结果。 规则操作命令包括以下两种格式: `op chain_name ip_or_cidr action`: `op`有三种操作: `I`(`Insert`):在对应规则链的起始位置插入一条规则。 `A`(`Append`):在对应规则链的末尾追加一条规则。 `D`(`Delete`):从`chain_name`规则链中删除第一条匹配的规则。 `action`字段有两种: `A`(`Accept`):表示允许访问。 `R`(`Reject`):表示拒绝访问。 `op chain_name1 ip_or_cidr G chain_name2`: `G`(``):如果匹配到该规则,则跳转到`chain_name2`继续匹配。 其中,`ip_or_cidr`字段可以是一个单独的IPv4地址,也可以是的IPv4地址段。 例如,`10.1.0.8/24`表示从`10.1.0.0`到`10.1.0.255`的IP范围。 对于一个CIDR格式`a.b.c.d/n`,如果某个IP地址的前`n`位与`a.b.c.d`的前`n`位一致,则该IP属于该CIDR范围。 查询命令格式如下: `M ip`:查询该IP是否被允许访问,其中`M`代表`Match`。 查询始终从默认规则链`c0`开始,依次匹配规则链中的规则,并输出匹配到的第一条规则的`action`(`A`或`R`)。 如果没有匹配到任何规则,则输出`U`(`Unknown`)。 若在匹配过程中发生循环,则输出`U`。

提示:带虚线的词点一下有通俗解释。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。