DP——记忆化搜索

 1 //斐波那契数列的简单递归显示(内存占用大) (严格来讲不算一个算法) 
 2 //利用公式an=an-1+an-2(n>1) 
 3 /*#include<iostream>
 4 using namespace std;
 5 int fib(int);
 6 int main()
 7 {   
 8     for(int i=0;i<40;i++)
 9        cout<<fib(i)<<endl;    
10     return 0;    
11 } 
12 int fib(int n)
13 {
14     return (n<=1)?n:fib(n-1)+fib(n-2);
15 }*/
16 //记忆化搜索的改进
17 
18 #include<iostream>
19 #include<cstring>
20 using namespace std;
21 const int MAXN=100;
22 int memo[MAXN];
23 int fib(int);
24 int k=0;
25 int main()
26 {   
27     for(k=0;k<MAXN;k++)
28       memo[k]=0;
29     for(int i=0;i<40;i++)
30        cout<<fib(i)<<endl;    
31     return 0;    
32 } 
33 int fib(int n)
34 {
35     if(n<=1) return n;
36     if(memo[n]!=0) return memo[n];
37     return memo[n]=fib(n-1)+fib(n-2);
38 }
1 // 求第n项fib数
2     int f[150];
3     f[1] = f[2] = 1;
4     for(int i = 3;i < 110;i++)
5         f[i] = f[i-1] + f[i-2];

猜你喜欢

转载自www.cnblogs.com/TYXmax/p/10994303.html