【发布时间】:2010-04-23 05:02:02
【问题描述】:
【问题讨论】:
标签: algorithm
【问题讨论】:
标签: algorithm
这个任务应该不用电脑就能解决。
但是,如果你概括这种情况,那么,我想你可以通过图形搜索来做到这一点,但是你应该考虑到图形的大小。如果每个顶点都是“状态”,那么这个状态的个数估计为2N⋅L,其中N是人数,L是手电筒的长度。每个状态都包含信息,每个人在哪一边,和剩余手电筒持续时间。如果有一条从初始状态到每个人都站在阵营一边的状态的路径,那么这条路径就是解决方案。
这是创建状态的最明显方式,但也许您可以以更有效的方式来实现(当前状态数量,因此运行时间,与输入大小成指数关系)。
但是,对于您提供的示例中的小尺寸,指数运行时间(带图表)是可以接受的。如果您建议程序化解决方案而不是手工操作,面试官甚至可能会喜欢它。
【讨论】:
你可能想看看EWD 1255。
【讨论】: