首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

请问一道贪心算法的有关问题

2012-02-19 
请教一道贪心算法的问题组织一场比赛,分为游泳赛跟自行车赛,必须在游泳后才能骑自行车。但是游泳池只有一个

请教一道贪心算法的问题
组织一场比赛,分为游泳赛跟自行车赛,必须在游泳后才能骑自行车。但是游泳池只有一个,参赛人员必须在请一个人游完后才能进入,否则则在池边等待。每个队员的游泳时间跟骑车时间都已知。问怎么安排比赛的人员表演次序才能使比赛最早结束

  谢谢大虾,呵呵

[解决办法]
按照各选手的骑车时间降序排列,即让骑车时间长的选手先游;

假设存在某排列次序(a1,a2,a3,....an),使得比赛最早结束;
不妨假设是ai最后结束的选手;

若存在有某选手aj排在ai的前面,而aj的骑车时间比 ai的骑车时间短;
那么将j+1到i之间的选手依次提前一位,aj放到原来ai的位置;

由于原来j+1到i的选手提前了一位游泳,那么这些选手的表演结束时间必定比改变次序前的表演结束时间要早;

前i个选手不管怎么变换次序,这i个选手中排在最后的选手的游泳结束时间是一样的,都是这i个选手的游泳结束的总和;
也就是说改变次序后的aj跟改变次序前的ai的游泳结束时间是一样的,但aj比ai自行车快,
那么改变次序后的aj比改变次序前的ai的表演结束时间要早,

其他人由于次序没任何变化,他们的表演时间也无任何变化;

所以改变次序后的比赛结束时间不比改变次序前的比赛结束时间晚;

证毕!




热点排行