回溯
2015-10-31 10:31
204 查看
谈到bactkracing,主要就是两种,一种是排列树,一种是子集树。
排列树
伪代码:
2.子集树
比如背包问题,有n个物品,是背包总价值最大,那结果可能是[0,1,…,1]1,0分别代表每一种物品选或者不选。
伪代码:
let’s back down to the bussiness.
排列树
伪代码:
//x[1..n]={1,2,3},,初始状态 backtrace(int t){ if(t>n)//如果超过了树的层数,说明已经排列完了 print(x[1..n]) else{ for(int i=t;i<=n;i++){ swap(x[i],x[t]);//这一层已经 出现所有以前层没有出现过的数 backtarce(t+1);//进入下一层 swap(x[i],x[t]);//回到上一层,还原上一层的场景 } } }
2.子集树
比如背包问题,有n个物品,是背包总价值最大,那结果可能是[0,1,…,1]1,0分别代表每一种物品选或者不选。
伪代码:
backtrace(int t){//当前层数 if(t>n){ print(x[1..n]); }else{ for(int i=0;i<=1;i++){ x[t]=i; if(underlimit(t)){ backtrace(t+1); } } } }
let’s back down to the bussiness.
相关文章推荐
- 回溯算法 n后问题
- n皇后问题
- 用回溯法解决好玩的青蛙过河问题
- N皇后问题
- 0-1背包问题
- 每日学习一算法【4】01背包问题
- 【Jason's_Knowledge】算法竞赛中的递归与迭代及其延伸内容简述
- 【Jason's_ACM_解题报告】Chinese Mahjong
- Restore IP Addresses
- LeetCode OJ算法题(五十一):N Queens II
- LeetCode OJ算法题(五十):N Queens
- LeetCode OJ算法题(三十六):Sudoku Solver
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 庖丁图解八皇后问题
- 最佳调度问题的回溯算法
- 计科1111-1114班第一次实验作业(NPC问题——回溯算法、聚类分析)
- 第1次实验 - NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 机器人的运动范围
- 硬币组合问题