8、组合:如何让计算机安排世界杯的赛程

你好,我是黄申。 2018年足球世界杯结束有半年了,当时激烈的赛况你现在还记忆犹新吧?你知道这场足球盛宴的比赛日程是怎么安排的吗?如果现在你是组委会,你会怎么安排比赛日程呢?我们可以用上一节的排列思想,让全部的32支入围球队都和其他球队进行一次主客场...

程序员的数学基础课

7、排列:如何让计算机学会“田忌赛马”

你好,我是黄申。 “田忌赛马”的故事我想你肯定听过吧?田忌是齐国有名的将领,他常常和齐王赛马,可是总是败下阵来,心中非常不悦。孙膑想帮田忌一把。他把这些马分为上、中、下三等。他让田忌用自己的下等马来应战齐王的上等马,用上等马应战齐王的中等马,用中等马...

程序员的数学基础课

6、递归(下):分而治之,从归并排序到MapReduce

你好,我是黄申。 上一节,我解释了如何使用递归,来处理迭代法中比较复杂的数值计算。说到这里,你可能会问了,有些迭代法并不是简单的数值计算,而要通过迭代的过程进行一定的操作,过程更加复杂,需要考虑很多中间数据的匹配或者保存。例如我们之前介绍的用二分查找...

程序员的数学基础课

5、递归(上):泛化数学归纳,如何将复杂问题简单化

你好,我是黄申。上一节的结尾,我们用递归模拟了数学归纳法的证明。同时,我也留下了一个问题:既然递归的函数值返回过程和基于循环的迭代法一致,我们直接用迭代法不就好了,为什么还要用递归的数学思想和编程方法呢?这是因为,在某些场景下,递归的解法比基于循环的...

程序员的数学基础课

4、数学归纳法:如何用数学归纳提升代码的运行效率

你好,我是黄申。 上次我们聊了迭代法及其应用,并用编程实现了几个小例子。不过你知道吗,对于某些迭代问题,我们其实可以避免一步步的计算,直接从理论上证明某个结论,节约大量的计算资源和时间,这就是我们今天要说的数学归纳法。 平时我们谈的“归纳”,是一种从...

程序员的数学基础课

3、迭代法:不用编程语言的自带函数,你会如何计算平方根

你好,我是黄申。 今天我们来说一个和编程结合得非常紧密的数学概念。在解释这个重要的概念之前,我们先来看个有趣的小故事。 古印度国王舍罕酷爱下棋,他打算重赏国际象棋的发明人宰相西萨·班·达依尔。这位聪明的大臣指着象棋盘对国王说:“陛下,我不要别的赏赐...

程序员的数学基础课
12122232425673