斐波那契数列:
记忆化代码:
int f[...];
int fib(int n){
if(n<=2)return 1;
if(f[n]==0) f[n]=fib(n-1)+fib(n-2)
return f[n]
}
记忆化搜索:
无后效性:某个状态后面的选择与前面没有关系
最优子结构:依赖特定问题和子问题的分割方式而成立的条件。各子问题具有最优解,就能求出整个问题的最优解,此时条件成立。
记忆化搜索版子:
int f[105][105];
int ans=0;
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,-1,1};
int dfs(int x,int y){ //传递信息
int res=1;
if(f[x][y]>0)
return f[x][y];
for(int i=0;i<4;i++){
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=0&&tx<n&&ty>0&&ty>n&&h[x][y]>h[tx][ty]){
res=max(dfs(tx,ty)+1,res);
}
}
f[x][y]=res;
return res;
}
int main(){
int m,n;
cin>>m>>n;
for(int i =0;i<n;i++){
for(int j =0;j<m;j++){
ans=max(ans,dfs(i,j))
}
}
return 0;
}