算法的思想
我个人认为算法场景题的总体解题思路是: 先将算法题转换成数学题,通过数学计算得出数学公式,
然后按照公式写代码;若是推导不出来数学公式,那就用代码穷举所有场景(下下策)
解题思路:
根据问题类型,先列出最简单的几个值比如在变量=0,1,2,3的情况下的结果,然后分析这个结果之间的关系----->分析数列的关系,得到一个数列公式
算法思想分类
动态规划算法:
通过将问题拆解成子问题,将子问题拆解成孙子问题--->不停的拆解下去,直到拆解到已知答案的问题为止------->进而得到目标问题的答案
斐波那契数列是动态规划算法的经典体现之一: f(n)=f(n-1)+f(n-2)
具体解题思路与数列
小青蛙跳台阶问题:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙上一个n级台阶总共有多少种跳法?
虽然求不出n与Sn的关系,但是能推导出Sn与S(n-1)和S(n-2)的关系=>
公式=S3=S2+S1 => Sn=S(n-1)+S(n-2)
背包问题:
数列公式
等差等比数列
斐波那契数列:
错排数列: