贪心算法也挺好-Greedy is Good

英文原文:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=greedyAlg

    John Smith遇到麻烦了。他是TopCoder的成员,一次他学会掌握了动态规划的“威力”并开始解决一个又一个问题。但是今天他忠诚的电脑表现的非常不友好。同往常的早晨一样,John10点起来,喝了杯咖啡,早饭之前便开始解决问题。事情似乎从一开始就有点不对劲,但是基于他丰富的经验,他瞬间写了一个算法。厌倦了每天早晨一次又一次的分配矩阵,电脑抱怨到:"分段错误"。尽管空着肚子,John还是想出一个聪明的主意,增加一个for循环来处理他所喜爱的矩阵,但是电脑哭诉到:"时间超时"。

John没有发狂,相反却做了一个全新的决定。编程已经够多了,他决定休个假作为自已努力工作的奖励。

    John体力充沛,他想要充分利用生命中的每一分钟。但不幸的是,有那么多事情要做,他不能把时间全部用来享受。因此,一吃过早饭他就设计了一个"娱乐计划",计划中描述了他将要进行活动的时间表:

           

他现在希望能够充分利用他所会的。如此精细的计划需要足够多的精力,但是他的心思早就跑到休假上去了。这就是John Smith的问题,他需要我们的帮助。

    我们能帮助他渡过一个愉快的假期吗?也许可以!但是首先我们来做个假设。因为John是一个一细不苟的程序员,一但他认定了某事就会一直按计划进行下去。因此,每一个单独的活动可能被选择也可能不被选择。因为两个选择都依赖于第一个活动,我们可以依据第二个活动做另外两个选择。简单分析的,我们会有2^N种选择,在我们的安全中结果是1024。然后我们可以检查每一个单独的活动是否是在时间允许的范围内。在这些可选集中,找到一个包括最大活动的结果是很容易的。因为有很多可选项,John需要寻求电脑的帮助。但是如果有50个活动会是什么情况呢?即使是世界是最快的计算机来处理这个问题也要用数年的时间。因此这个方案明显是不可行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值