随笔分类 -  算法

程序员常用算法
摘要:本文内容摘自http://m.zhihu.com/question/27455969光栅化Bresenham's line algorithm [1]:经典的绘画直线算法,后来还可以稍作修改用于绘画圆弧[2],都不用三角函数或除数,只需用整数加法、减法和乘法。Perspective-Correct ... 阅读全文
posted @ 2015-03-25 10:25 David_W 阅读(3690) 评论(0) 推荐(0)
摘要:转自: http://www.cnblogs.com/ltang/articles/1861284.html#topOJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094... 阅读全文
posted @ 2015-03-17 13:30 David_W 阅读(351) 评论(0) 推荐(0)
摘要:转自: http://www.cnblogs.com/ltang/archive/2010/11/25/1887573.html解题思路: 建立trie图,我们可以假设起点均为root节点,题目转化为求解root经过m步到达所有节点的总和 dp求解,如果存在i->j的路径,counter[m, ... 阅读全文
posted @ 2015-03-17 13:02 David_W 阅读(154) 评论(0) 推荐(0)
摘要:1 listlist1; 2 void SumOfkNumber(int sum, int n) 3 { 4 // 递归出口 5 if (n ::iterator iter = list1.begin(); iter != list1.end(); iter++)14 ... 阅读全文
posted @ 2015-03-16 17:32 David_W 阅读(291) 评论(0) 推荐(0)
摘要:1 void swap(char[] a, int i, int j) 2 { 3 char tmp = a[i]; 4 a[i] = a[j]; 5 a[j] = tmp; 6 } 7 8 void Perm(ch... 阅读全文
posted @ 2015-03-16 17:23 David_W 阅读(133) 评论(0) 推荐(0)
摘要:1 void GetNextval(char[] p, int[] next) 2 { 3 int pLen = p.length; 4 next[0] = -1; 5 int k = -1; 6 int j = 0; 7 ... 阅读全文
posted @ 2015-03-16 17:01 David_W 阅读(171) 评论(0) 推荐(0)
摘要:1 #ifndef PRIORITYQUEUE_H 2 #define PRIORITYQUEUE_H 3 4 5 #include 6 #include 7 #include 8 9 //----------------------- Swap ----------... 阅读全文
posted @ 2015-03-16 15:53 David_W 阅读(197) 评论(0) 推荐(0)
摘要:启发式搜索算法 所谓启发式搜索,就在于当前搜索结点往下一个结点搜索时候,通过一个启发函数来进行指导,选择代价最少的作为下一步搜索结点。 DFS和BFS在展开结点时候都属于盲目型的搜索,也就是说,它不会选择哪个结点在下一次搜索中更优而去跳转到该结点进行下一步的搜索。在运气不好的情况下,均需要试探完... 阅读全文
posted @ 2015-03-15 21:34 David_W 阅读(368) 评论(0) 推荐(0)
摘要:1 template 2 void percolatedown(T a[], int n, int i) 3 { 4 T tm = a[i]; 5 int child = i a[child+1]) 9 child++;10 if (tm >... 阅读全文
posted @ 2015-03-15 20:37 David_W 阅读(132) 评论(0) 推荐(0)
摘要:1 2 import java.util.Random; 3 4 public class LCS{ 5 public static void main(String[] args){ 6 7 //设置字符串长度 8 ... 阅读全文
posted @ 2015-03-15 19:42 David_W 阅读(145) 评论(0) 推荐(0)
摘要://代码来源:http://discuss.leetcode.com/questions/29/spiral-matrix。 class Solution { public: vector spiralOrder(vector >& matrix) { ... 阅读全文
posted @ 2015-03-15 19:39 David_W 阅读(184) 评论(0) 推荐(0)
摘要:作为快速排序的扩展应用,这里介绍一个选择第k个最小元素的问题。1. 问题描述给定线性序列中的n个元素和一个整数k, 0= key) --last; 9 int_array[first] = int_array[last];10 while(first < last &... 阅读全文
posted @ 2015-03-15 18:06 David_W 阅读(699) 评论(0) 推荐(0)
摘要:快速排序也是根据分治策略设计的一种高效率的分类算法。首先回顾下分类算法的分类思想:它从待分类序列S中随机取出一个元素x,并把S分成三个子序列S1,S2和S3,分别是S中小于,等于和大于x的元素序列,而后对S1和S2递归使用本算法,就可以得到排好序的序列。实际操作中通常不分出序列S2,而是直接把S2中... 阅读全文
posted @ 2015-03-15 16:45 David_W 阅读(167) 评论(0) 推荐(0)
摘要:合并排序算法的时间复杂度为O(nlogn), 是渐近意义下的最优算法。合并算法也是分治算法的应用例子。合并算法的基本思想:将待排序元素分成大小大致相等的2个子集合,分别对这2个子集合进行排序,最后将排好序的子集合合并成为所要求的排好序的集合。算法实现: 1 template 2 void merge... 阅读全文
posted @ 2015-03-15 16:24 David_W 阅读(362) 评论(0) 推荐(0)
摘要:作为分治法的典型应用,二分搜索是程序员的常用算法。但是这个算法,却往往容易写错。因此,特意备份了July的一份代码,以备查询之用。//二分查找V0.1实现版 //copyright@2011 July //随时欢迎读者找bug,email:zhoulei0907@yahoo.cn。 //首... 阅读全文
posted @ 2015-03-15 16:01 David_W 阅读(158) 评论(0) 推荐(0)