算法系列
文章平均质量分 63
xynldr
梦想是注定孤独的旅程。
展开
-
尺取法(一)
尺取法,顾名思义,就是像尺子一样,一块一块的截取。尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握这个技巧,是因为尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以尺取法是一种高效的枚举区间的方法,一般用于求取有一定限制的区间个数或最短的区间等等。当然任何技巧都存在其不足的地方,有些情况下尺取法不可行,无法得出正原创 2017-10-20 12:04:26 · 303 阅读 · 0 评论 -
N皇后问题 回溯法
回溯法过程 在试探过程中,皇后的放置需要检查她的位置是否和已经放置好的皇后发生冲突,因此需要一个检查函数 假如两个皇后被放置在(i,j)和(k,l)上 ,当且仅当 |i-k|==|j-l| 时两个皇后在同一条对角线上。 (1).先从首位开始检查,如果不能放置,则检查该行的第二个位置,依次进行下去,直到找到一个可以放置皇后的位置,保存当前状态,然后转下一行重复该操作。 (2).如原创 2017-10-18 20:12:25 · 683 阅读 · 0 评论 -
二分查找算法
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn) 一般情况 查找某个数的下标 int Binarysearch(int a[],int len,int key) { int l = 0,r = len-1; while(l <= r) {原创 2017-10-20 14:50:30 · 215 阅读 · 0 评论 -
KMP算法
从头到尾彻底理解KMP 看得我头疼,还需要慢慢理解...原创 2017-10-22 09:02:54 · 161 阅读 · 0 评论 -
最长xx子序列
最长上升子序列 最长公共子序列原创 2017-11-29 18:55:34 · 256 阅读 · 0 评论 -
深度优先搜索 DFS
深搜实现全排列 #include using namespace std; int n; int a[10],book[10]; void dfs(int cur) { if(cur == n + 1) { for(int i = 1;i<=n;i++) cout<<a[i]; cout<<endl; return; } else { for(int i =原创 2017-10-22 22:30:25 · 210 阅读 · 0 评论