第14章 三十分?
  “在座的都有一定基础,我就不绕弯子了。”
  胡云程一到讲台上,就像变了个人似得,双手撑著桌面,鹰视狼顾,
  “信息学竞赛,翻来覆去就考察两个东西——算法,和编程。前者是解决问题的思路,后者是把思路变成机器能执行的步骤。两个环节,少了哪个都不行。”
  他抬起手,在键盘上敲了一下。
  “现在,看你们面前的屏幕,思考这道题。”
  李林的目光落在屏幕上,题目不长,但信息量不小:
  “假设你是一位很棒的家长,想要给你的孩子们一些小饼乾。但是,每个孩子最多只能给一块饼乾。”
  “对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼乾的最小尺寸;並且每块饼乾j,都有一个尺寸s[j]。如果s[j]>=g[i],我们可以將这个饼乾j分配给孩子i,这个孩子会得到满足。你的目標是满足儘可能多的孩子,並输出这个最大数值。”
  单看文字描述,脑子一时半会儿还有点绕。
  但题目下面配了两组示例,李林扫了一眼,大概就懂了。
  “示例:输入为g=[1,2,3],s=[1,1]时;输出应该为1。”
  “解释:你有三个孩子和两块小饼乾,3个孩子的胃口值分別是:1,2,3。虽然你有两块小饼乾,由於他们的尺寸都是 1,你只能让胃口值是1的孩子满足。所以你应该输出1。”
  道理不难懂。
  但真要让他从头开始想,果然还是有点头痛。
  算法的本质,说到底就是数学啊。
  而他跟数学的关係,就算比作“美苏冷战”,都会得到“没那么铁”的评价。
  “融合。”
  李林在心中默念。
  【高中数学+高中语文】→【获得效果“分析lv1”】
  相性临时提升的李林,也终於开始思考。
  然而,才过了不到一分钟,胡云程的声音就从讲台上传了下来。
  “这道题该用什么算法?”
  李林有些诧异地抬起头。
  这么快?
  他连思路都还没捋出来。
  “贪心算法——”
  前排已经有几个同学脱口而出。
  胡云程见状,笑了起来,
  “很好。一看就是刷过题的,看一眼就知道答案了。”
  他隨手指了指刚才抢答的一个男生,
  “你,解释一下为什么要用贪心算法。”
  那男生颇有自信地起身,声音洪亮道,
  “贪心算法的核心思想是,在每一阶段都选择当前看起来最优的解,通过堆积局部最优来达到全局最优。具体到这道题,我们应该先把给出的两个数组排序,然后——”
  “停。”
  然而,胡云程毫不留情地打断了他,
  “我问的是,『为什么』要用贪心算法。”
  “额——?”
  男生被截断了话头,脸上的表情有些僵硬,
  “因为……额,因为……”
  “因为什么?因为答案上是这么写的?因为你刷过一模一样的题,所以直接把答案背出来了?”
  胡云程一步步逼近,语速越来越快,
  “你刚才还说贪心是通过堆积局部最优解达到全局最优,那么一定能达到全局最优吗?是所有问题都能用贪心算法吗?”
  “不……不是。”
  “那这道题凭什么就能用?”
  “……”
  一连串的快速提问,直接把那个男生给问傻了。
  他张了张嘴,一个字都吐不出来。
  机房也瞬间安静,似乎连呼吸声都被刻意屏住了。
  可惜,胡云程却没有放过他们的意思。
  他一个个地把刚才出声回答的人都点了起来,反覆问同一个问题——
  “为什么用贪心算法?”
  却没有一个人能给他满意的答覆。
  胡云程嘆了口气。
  “谁有思路?”
  鸦雀无声。
  “三十分——”他的目光落在角落里,“你有吗?”
  被点到名字的李林缓缓站了起来。
  “我不懂贪心算法。”
  他的回答很正常,正常到周围的人连表情都懒得做。
  也是,一个数学月考三十分的人,指望他懂这个?
  现在站著的都是清北班和重点班的学生,难不成还能指望一个普通班的来救场?
  要是那个谁……叫杨什么的来,估计还有点戏。
  这是大部分人內心的想法。
  在下一刻就被打破了。
  “但我確实有一个思路。”
  周围的目光忽然聚了过来。
  “哦?”
  胡云程的眉毛也微不可察地挑了一下,
  “展开讲讲。”
  在他阎王点卯这段时间,李林一直没有停止思考。
  此刻李林站起来,脑子里那条原本模糊的思路已经逐渐凝聚成形。
  他定了定神,开始说,
  “我想的是,选择一个极值作为切入点,比如,尺寸最小的饼乾,应该给哪个孩子?”
  “如果这块饼乾的尺寸,比所有孩子里最小的胃口值还要小,那它就是一块废饼乾,谁都满足不了。但如果不是,那它就应该分给胃口最小的那个孩子。”
  “因为如果不分给他,万一其他孩子的胃口都比这块饼乾大,我们就白白浪费了一次分配机会。把一个最小的资源,用在最容易被满足的需求上,这看起来是最不亏的选择。”
  “在发完这个饼乾后,继续考虑尺寸次小的饼乾,思考方式和上面一样,直到所有尺寸的饼乾都考虑完,就能得到最终答案。”
  话音落下,周围静悄悄的。
  李林抬起头,发现四周的目光都钉在了自己身上。
  他下意识地看向讲台,正看到胡云程脸上的严肃一点点舒展开来,变成了一张几乎压不住的笑脸。
  “同学们,看到没有?”
  胡云程转过身,拿粉笔在黑板上敲了敲,
  “三十——咳,李林同学很谦虚,嘴上说自己不懂贪心算法。但他刚才说的那一套,每一步都在找当前最优解,一步一步推到最后。这就是最標准的贪心算法,也是这道题的最优解。”
  他转回来,目光重新落在李林身上,但笑容里多些期待。
  “那么,李林。你能回答我的问题吗?为什么这道题,可以用贪心算法解决?”
  胡云程注视著他。
  不止是昨天,就在刚才,李林又给了他一个惊喜。
  贪心算法虽然算不上什么复杂算法,但是能用如此通俗自然的语言解释出来,已经颇为难得了。、
  所以他决定赌一把。
  赌这个数学只有三十分的学生,真的能达到他的期待。