算法思想简介(分制(分开在递归),贪心(DJS),动态分配(dp,解决多变化条件),回溯(万能,深度优先))
不管是动态规划,还是回溯都是在可选择 条件固定时,进行选择 ,都会用到递归调用。
不同的是:
贪心最好理解,从头开始找最优结果一直到最后。(一般for循环就可以)
分治思想就是完全的找局部最优解,然后综上所述。(递归调用进行区域划分)
递归划分区域到最小一般先左后右,进行比较,最后合并merge
动态规划一般见问题从 结束点出发,找最小范围的最优解,然后迭代到初始位置。(爬楼梯问题:找出最后一步最优解,递归到第一步,逆序递归调用)
#include <iostream>
using namespace std;
int lift(int n){
int f;
if(n==1||n==0||n==2){
return n;
}
else{
return lift(n-1)+lift(n-2); //80的情况只有78的加上79的。 如果能上3阶就再加上 77的。递归就行了。
}
}
int main(){
cout<<lift(20);
return 0;
}