最长上升子序列——回溯法
来源:互联网 发布:java撤销 编辑:程序博客网 时间:2024/05/16 12:58
什么是最长上升子序列
回溯法其实算是一种暴力法,但是我们必须先学会暴力法再去考虑更优化的算法,不然真的会。。。boom
不能交叉,所以你从一边开始遍历的时候,另一边被匹配的点只会一次比一次高。所以只需要记录下被匹配那一边的index就好了。
(我们这题是修路的例子,也是一样的)
回溯法思路
如果这个位置接下去搜索不到
弃掉
如果这个位置接下去搜索得到
可以选择匹配
也可以不匹配
先判断回溯条件
if (b == n || a == n) { max = Math.max(max, sum); return;}
寻找循环
int newIndex = -1;boolean flag = false;for (int i = b; i < n; i ++) { //如果找得到,可以连也可以不连 if (first[a] == second[i]) { newIndex = i; flag = true; break; }}
如果这个位置接下去搜索不到
弃掉
//如果找不到if (!flag) { //继续找下一个a,b不增加,sum不增加 back(a + 1, b, sum);
如果这个位置接下去搜索得到
可以选择匹配
也可以不匹配
else { for (int i = 0; i < 2; i ++) { //选择连 if (i == 0) { back(a + 1, newIndex + 1, sum + 1); //不选择连 } else { back(a + 1, b, sum); } }
思路很清晰!
阅读全文
0 0
- 最长上升子序列——回溯法
- hdu4521——最长上升子序列
- 笔记——最长上升子序列
- shuoj1936-D序列—最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- Http详解
- csc_matrix函数(学习日记)
- 大规模分布式存储系统原理解析与架构实战
- Linux下常用的一些命令笔记
- Coneology(poj2932)
- 最长上升子序列——回溯法
- HyperLPR
- 吴恩达深度学习笔记(一)week3 浅层神经网络
- Python简单爬虫——淘宝数据
- Linux逻辑卷管理(LVM)详细教程
- 2-Java IO与装饰模式
- centos7安装python3.5
- 分治法之归并排序
- 操作系统基本概念-操作系统学习笔记一