题目名称 | 268. [NOI 1997]文件匹配 |
---|---|
输入输出 | wildcard.in/out |
难度等级 | ★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 16 MiB |
测试数据 | 20 |
题目来源 | BYVoid 于2009-02-15加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:7, 提交:33, 通过率:21.21% | ||||
FoolMike | 100 | 0.567 s | 3.45 MiB | C++ |
zhouyi1970 | 100 | 0.644 s | 3.64 MiB | C++ |
jade | 100 | 0.830 s | 3.17 MiB | C++ |
BYVoid | 100 | 1.012 s | 4.04 MiB | C++ |
jade | 100 | 1.118 s | 3.17 MiB | C++ |
BYVoid | 100 | 1.120 s | 4.04 MiB | C++ |
BYVoid | 100 | 1.232 s | 4.04 MiB | C++ |
zhouyi1970 | 90 | 0.661 s | 3.46 MiB | C++ |
zhouyi1970 | 90 | 0.725 s | 3.64 MiB | C++ |
FoolMike | 90 | 5.243 s | 0.29 MiB | C++ |
关于 文件匹配 的近10条评论(全部评论) | ||||
---|---|---|---|---|
可能爆搜比带空串转移的DFA匹配快一点……
|
在计算机的日常操作中,经常需要对当前回录下的所有文件中的一部分文件进行操作。例如,将当前目录下的所有文本文件复制至另一个目录下:将当前目录下所有以a 打头的文件删除; 等等。
很多操作系统都采用正则表达式来实现文件匹配功能。一种简单的正则表达式由英文字母(区分大小写)。数字及通配符”*”和”?”组成,”?”代表任意一个字符,”*””则可以代表零个或任意多个字符。
例如:
现要对某目录下的部分文件进行操作。写一个程序,寻找一个正则表达式,使其能匹配的待操作文件最多,但不能匹配任何不进行操作的文件。注意你所找到的最优正则表达式的长度应当是最短的。如果有多个长度最短的最优正则表达式,则其中任意一个都是允许的。
输入输出
输入文件由N(1<=N<=250)行组成。每行给出了一个文件名(由英文字母和数字组成:英文字 符要区分大小写,文件名长度不超过8个字符),其后是一个空格符和一个字符(“+”或"-").“+”表示要对该行给出的文件进行操作,"-”表示不进行 操作。
输出文件由两行组成。第一行是一个整数,给出了你的程序所找到的最优正则表达式所能匹配的文件数目.在第二行给出你的程序所找到的最优正则表达式。
样例
输入文件
EXCHANGE + EXT + HARDWARE + MOUSE - NETWORK -
输出文件
2 E*