动态规划之最大连续子数组(递归备忘录写法)

[cpp] view plain copy
 
  1. #include <iostream>  
  2. #define Max 100  
  3. using namespace std;  
  4. //最大子数组和,用递归的备忘录写法,动态规划。  
  5. int b[Max];  
  6. int a[]={1,12,-22,3,7,8,-14,-11,9,8};  
  7. int fun(int n)  
  8. {  
  9.     if(b[n]>0)return b[n];  
  10.     if(n<0)return 0;  
  11.     int t=fun(n-1);  
  12.     if(t<0) b[n]=a[n];  
  13.     else b[n]=t+a[n];  
  14.     return b[n];  
  15. }  
  16. void main()  
  17. {  
  18.     fun(9);  
  19.     int max=b[0];  
  20.     for(int i=1;i<10;i++)  
  21.     {  
  22.         if(b[i]>max) max=b[i];  
  23.     }  
  24.     cout<<max<<endl;  
  25. }  

我感觉用递归的备忘录写法好写多了。

posted @ 2017-08-21 17:47  天涯海角路  阅读(221)  评论(0)    收藏  举报