核心类
new BrigeAcross().Go();
题目是一个FLASH中的启发:
    晚上天黑,有一坐桥,有五个人A.B.C.D.E要此过桥,现在有一盏灯只能亮30秒.A过此桥要1秒,B需要3秒,C需要6秒,而D需要8秒,E则需要12秒.现在只能两两一组过此桥.过桥时间最大值.比如,E和B一起过桥.则需要12秒.C和D一起过桥则需要8秒.然后还要有一个回来送灯的人.问30秒内怎么让这5个人都过桥?
接着说下核心算法:
N个人过桥消耗时间计算步骤如下:
1.开始从等待队伍中选取最小过桥消耗时间的两个过桥进入已过桥队伍中
2.从已过桥队伍中选取最短过桥消耗时间的人回去到等待队伍中.
3.从这里开始有1个分支:
  • 当人数大于三人时:选取等待队伍中最大和第二大过桥时间的人到已过桥队伍中回来时按2回来
  • 当人数不大于三人时:选取队伍中最小和最大过桥时间的人到已过桥队伍中回来时按2回来
4.循环2~3可得出结果.
结果:
posted on 2009-07-22 16:15  Chinajmz  阅读(680)  评论(3)    收藏  举报