2009 英特尔® 线程挑战赛 第四题 字符串搜索!
字符串搜索
问题描述:写一个线程程序来搜索用字符串表示的 DNA 序列的数据库,来找到可以匹配的其他 DNA 序列。数据库和查询字符串由四个字符组成:'A', 'C', 'G'. 和 'T' 。对于每个输入的搜索查询字符串,输出必须报告任何输入 DNA 序列内的精确匹配位置。如果查询字符串与数据库内的多个序列匹配,必须报告每个结果;如果查询字符串与同一个数据库序列的多个位置匹配,必须报告完全匹配的那个最早出现的位置。这个问题(资料库档案,查询档案,输出结果)的文件名将在命令行上给出。
文件格式:输入数据库和查询档案将具有相同的格式。每个序列将以大于字符('>')开始,紧跟序列来源的描述,描述不超过 131 个字符。序列会在下一行开始,持续几行。每一行都将包含'A', 'C', 'G'. 和'T'集合的整 80 个字符,除了最后一行,可能会少于80个字符。在最后一行之后将是从下一个序列直至文件末尾的描述符,文件末尾将由描述符(">EOF" )表示 。
对于包含在第二个输入文件的每个查询字符串,输出文件应打印查询序列的描述符和数据库序列的描述符,这个数据库序列包含一个匹配和此匹配在数据库序列内的位置。如果在任何数据库序列内,都没有找到查询序列字符串,应在查询描述符之后打印出一个相关消息来体现这个结果。
计时:总执行时间将用于计分。这允许输入数据库序列的编码或压缩在输入期间完成(如果你的算法采用这种转换)