28 搜索难题(第2/2页)

“你一路跑来找我,”她说道,“我刚才听到你喘着气说需要我的帮助。”

Frank无视了她的意见。“我想明白了,”他终于有气力讲话了。“巫师们准备今晚劫狱。”

Notation看起来很惊讶。“劫狱?Socks劫狱想干什么?”

“等等。你怎么知道是Socks?”Frank问道,有些出乎意料。

Notation很迷惑:“你什么意思?我以为你怀疑他一段时间了。不是吗?他一点也不狡猾。”

“是的。是有些蛛丝马迹。”Frank没有正面回应。

Notation沉默下来,盯着地面,她的大脑飞速运转着,试图将其余的事件联系起来。突然,她的表情变得灰暗了,又看回Frank。“为什么告诉我这些?”她问道,“我现在不管这个案子了,还记得吗?”

Frank盯着她,难以置信。“你怎么能让那种事阻拦你的脚步?”他问道,“难道你不想抓住这些盗贼吗?”

“我当然想,”Notation简短地回答,“但是警长说过……”

“忘记警长吧,”Frank打断了她的话,“这是你的案子,无论他说了什么都不重要,不是吗?”

Notation看起来有些矛盾,Frank抓住这个间隙。

“听着,”他补充道,“想要抓住这些贼,我需要帮助,这次我不能调集警察,至少现在还不行。我很确信其中一个恶棍正假扮一名警察,但是我不知道他是谁。在我搞清楚之前,我无法相信任何人。”

“那么为什么相信我?”Notation反问。

“因为你在这里。”Frank说。

“这不是一个好理由!”Notation说,显然被这句话的隐含意义冒犯了。

“不是那样,”Frank说,试图打消她的反对意见,“我的意思是,因为你在这家店里用你自己的资金购买定价过高的‘堆’。这说明你很关心自己的工作。更重要的是,如果你以某种方式参与到巫师的劫狱中,你将很容易让邪恶巫师联盟给你做一个魔法‘堆’。只要有更好的选择,任何心智正常的人都不会直接走到Orb区。”

Notation站在那儿,直视着Frank。

“是你让我来这里的。”她咬牙切齿地说道。

“这也是好事,”Frank说,“因为我可以准确地知道今天上午在哪里可以找到你。这是全世界最简单的搜索问题,如同在一个数组中去找一个已知下标的值一样简单。我只需要直接来到Heaperous的店。不过我的确是跑过来的,”他承认,“我想到你会来得早一些,我不想与你错过。”

Notation看起来还没有完全释怀:“你让我来这里是想验证我是否参与此次阴谋?”

“不,我让你来这里是不想让你参与其中,”Frank承认道,“我只在跑来途中想过证明这一点。我以为……”

“你不相信我?”Notation冷冷地问道,听起来每个字都像是在谴责Frank。

“不要认为这是针对你个人的,”Frank说,“我不相信任何人。”

“你……你……”Notation气急败坏地说,渐渐涨红了脸,显然无法说完对Frank的指责。

几分钟后,Frank说:“你要加入吗?”

她僵硬地点点头。

“好,”Frank说,“两个小时后在监狱门口见面,带上十字弓。”

Notation再次点了点头。

“还有一个碗。”Frank补充道。

“一个碗?”Notation问道,暂时从愤怒中走出来,很是惊讶。

Frank开口大笑:“监狱的走廊里有一些轻度作呕的咒语。你可能需要一个碗来呕吐。”

警用算法导论:期末考试复习课

节选自Drecker教授讲义

如果你从这门课中只学到了一样东西,那应该是:高效算法的关键在于信息。当遇到一个新的问题时,应该花些时间理解这个问题的结构和它的数据。问题拥有的结构越多,你越有可能使用这些信息。正如你所看到的,在一个有序数组中找到一个值比在一个完全随机的数组中找到一个值要简单得多。有时候,你甚至可以建立附属的数据结构,例如堆或逆向索引,以提供所需要的结构。尽管如此,解决问题的第一步始终应该是理解问题。