将琴存诗
人生 可以不要那么 耀 ,只需要有 一个  平凡的梦想  足以 。—— loveincode -_^ RSS
Fork me on GitHub

一些常见的递归算法 动态规划算法

最大值的递归算法

对于一个数组 有A[ 1...n ]

算法调用的时候调用max(n)

max(i)
if 
     i = 1 return A[i]
else
     if A[i]>max(i-1) return A[i]
     else return max(i-1)
     end if
end if 

平均值的递归算法

对于数组 a[ 1...n ]

sum 初值为 0

index 初值则为1

调用该算法使用 Ave(a,sum,index)

Ave(int a[],int sum,int index)
    if(index > n) 
     return sum/(index-1) else return Ave(a,sum+=a[index],index+1)

汉诺塔的 递归算法

void move(int n,char left,char middle,char right)
{
    if(n==1)//移动1号盘
         cout<<n<<"号盘"<<""<<left<<""<<right<<endl;     
    else{
        move(n-1,left,right,middle);
        cout<<n<<"号盘"<<""<<left<<""<<right<<endl;//移动n号盘
        move(n-1,middle,left,right);
    }
}

动态规划问题

Lcs 最长子序列 递归式

ai = bi L[i,j] = L[i-1,j-1] + 1;

ai!= bi L[i,j] = max{L[i-1,j],L[i,j-1]}

Floyd 最短路径 递归式

 

0- 1 背包的 递归式

si > j  V[i,j] = V[i-1,j]         //当前背包大小小于物品的体积

si =< j V[i,j] = max{V[i-1,j],V[i-1,j-si]+vi}//当前的背包大小大于等于物品的体积

当 0 - 1 背包 变成 完全背包的 时候

可以修改以上的递归式 修改为 一下 格式k = si/j

si > j  V[i,j] = V[i-1,j]         //当前背包大小小于物品的体积

si =< j V[i,j] = max{V[i-1,j],V[i-1,j-k*si]+k*vi}//当前的背包大小大于等于物品的体积

3着色问题 的 递归算法

输入:无向图G=(V,E)
输出:图的结点3着色向量c[1..n],1≤c[k]≤31≤k≤n)。
1.    GraphColorRec(1)    
过程 GraphColorRec(k)
1.     for color←1 to 3
2.          c[k]←color
3.          if c[1..k]为合法着色 then    //部分解或解
4.              if k=n then             //
5.              output c[1..n] and exit
6.              else                 //部分解
7.              GraphColorRec(k+1)     //进入下一个结点
8.              end if
9.          end if
10.       end for

4皇后问题 递归算法

输入:空
输出:对应于4皇后问题的向量c[1..4](全局量)
    1.    advanced(1)
过程 advanced(k)
1.          for col←1 to 4         //最多只有4列
2.        c[k]←col        
3.        if c[1..k]是解 then     //部分解或解    
4.              if k=4 then     //完全解
5.            output c[1..4] and exit    
6.              else         //部分解               
7.                    advanced(k+1) //移至下一行
8.              end if 
9.        end if     
10.           end for

 

posted @ 2015-06-23 19:31  loveincode  阅读(1137)  评论(0编辑  收藏  举报
最简单即最美
有了信仰,自己要坚持努力 2017.07.09 21:34