(点击上方公众号,可快速关注)
问题
在中国大学MOOC听北京大学的《算法初步》课程,第一章有道课后习题比较典型,是关于三层循环的时间复杂度的评估。问题是这样的:
解法一
作为选择题,最直接的方法就是通过代入法验证结果对不对。
当n=4,此时c只能是3,b只能是2,a只能为1,所以语句执行次数为1。将n=4带入上A、B、C三个选项,看看哪一个等于1,这道题比较直接,代入n=4的情况就能得到答案C。否则,就多计算几个n的值代入验证。
解法二
近似求法。
在坐标系上将点画出来,如果只有b、c两个维度:
可以看到,将最外侧的点连接起来组成一个三角形,三角形边和内部的点的个数就是语句执行的次数,可以用三角形的面积公式近似,