记忆化搜索

1,记忆化搜索的思想 ;对于相同的状态往往得出同样的结果,导致要重复计算很多次,在搜索的过程中我们把结果记录下来

就可以大量减少计算量。

2,记忆搜索的实现:首先创建一个记忆数组,用来记录结果,然后在搜索的过程中判断此状态是否搜索过,如果搜索过直接使用

已经记录下的结果。

例如 ;记忆搜索斐波那契数列

#include<bits/stdc++.h>

using namespace std;
int f[50];//记忆数组。下标代表斐波纳契数列的第几项。
int dfs(int x)
{
if(f[x]) return f[x];//如果被搜索过直接返回
if(x==1||x==2)f[x]=1;
else return f[x]=dfs(x-1)+dfs(x-2);
}
int main()
{
int n;
while(cin>>n)
{
dfs(n);
cout<<f[n]<<endl;
}
return 0;

}

posted @ 2019-07-30 17:25  zw100  阅读(149)  评论(0)    收藏  举报