今天主要讲递归
深搜 dp做准备,
能看到算法复杂度
要真正理解:(从上往下扎,到边界结束,再一层一层往上返)
下图:第一行时边界,第二行时递归模式
爆了:
RE:(我也出过原来是这样)
递推就行
老题了
一般时不敢这么写的,重复太多,所以记忆数组 :
刚试完,50确实卡住:报的TLE ## 记忆数组AC
oj里还有个快速幂的,JWmm nb
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
long long a[55]= {0};
long long f(long long n)
{
if(n==1||n==2)
{
return 1;
}
if(a[n]==0)
{
a[n]=f(n-1)+f(n-2);
}
return a[n];
}
int main()
{
long long a;
while(cin>>a)
{
cout<<f(a)<<endl;
}
return 0;
}
递推也就1ms(记忆了也能1ms)
%3循环节
用到了个公式
对递归的升华:(今天最重要)
(就是二进制唯一表示)
只能递归
2.1.0都结束
深搜:
是不能超过最左边那位的数的一半
贪心? 贪心!
递归:冷静看,算是伪递归了
广深搜入门
上下左右搜索的题,太简单了,数据结构入门题
这个处理挺有意思的,走过的变白,我的话会弄标记数组,这样省多了(编程意义,空间意义)
这里可以搞个(四个数的方向记录)数组:
**