(给ImportNew加星标,提高Java技能)
分手厨房(Over Cooked!)是一款以高难度合作著称的游戏,在形形色色的厨房中,你需要和你的同伴一起克服重重难关,按照指定的顺序生产出美味佳肴,满足客人的味蕾。在游戏过程中,制作一道菜需要完成许多的步骤,以第一关中的寿司为例,需要蒸米饭、切鱼片、切黄瓜、然后用紫菜把他们包在一起,与此同时你还要兼顾洗掉脏盘子。不难看出,当有多个玩家参战的时候,这里有些工序是可以同时进行的(比如蒸米饭和切鱼片),但也有些工序是有顺序依赖的(比如只有一个案板,那么切鱼片和切黄瓜就不可能同时进行),那么,如何才能将所有的工序进行一个合理的排序,来保证其正常运作呢? 其实这个问题,正是一个典型的拓扑排序问题,要讲拓扑排序,我们还得先从一种基本的数据结构:**图(Graph)**说起。 图是一种由节点和边组成的数据结构,你可以简单地联想平常使用的思维导图,这就是一种非常典型的图结构。图中的边可以是有方向的,也可以是没有方向的,这两种图分别称为有向图和无向图(注意,并不是所有节点都必须连接在一起):转自:Mark Lux'Pub 作者:Mark Lux
http://marklux.cn/blog/117