一些常见的递归算法 动态规划算法
2015-06-23 19:31
459 查看
最大值的递归算法
对于一个数组 有A[ 1...n ]
算法调用的时候调用max(n)
平均值的递归算法
对于数组 a[ 1...n ]
sum 初值为 0
index 初值则为1
调用该算法使用 Ave(a,sum,index)
汉诺塔的 递归算法
动态规划问题
Lcs 最长子序列 递归式
Floyd 最短路径 递归式
0- 1 背包的 递归式
当 0 - 1 背包 变成 完全背包的 时候
可以修改以上的递归式 修改为 一下 格式k = si/j
3着色问题 的 递归算法
4皇后问题 递归算法
对于一个数组 有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]≤3(1≤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
相关文章推荐
- android 通过httpclient下载文件并保存
- 网站制作笔记-bootstrap可视化布局,表单生成工具,快速制作网页原型
- pandas-如何保存groupby函数的结果?
- 如何让应用支持quicksearchbox全局搜索
- db2 错误码 57016 因为表不活动,所以不能访问它
- scala之尾递归
- XAMPP phpMyAdmin #2002 #1045解决办法
- speedtest-cli命令行下测试服务器外网速度
- Class.forName的作用以及为什么要用它
- State Machines with C Callbacks
- cuda并行编程之求解ConjugateGradient(共轭梯度迭代)丢失dll解决方案
- 使用Mysqldump 备份数据库
- 黑马程序员_JAVA的异常处理_2_总结
- 超详细的vim+cscope 的使用规则 转载
- 10个精妙的Java编码最佳实践
- 登录注册——注册输入验证
- 配置pyqt5环境 for python3.4 on Linux Mint 17.1
- eclipse快捷键总结
- 我的javascript启蒙之路
- linux驱动常用宏定义函数