算法
山路水桥
必须非常努力 才能看起来毫不费力
展开
-
背包问题
[问题]:己知一个容量为weight的背包。现在要从n种物品中选取若干装入背包中,每种物品的重量为w(i) 、价值为p(i) 。定义一种可行的背包装载为:背包中物品的总重量不能超过背包的容量,并且一个物品要么全部选取,要么不选取。采取怎样的装包方案才会使装入背包的物品总效益值最大?【输入】weightnw(i)p(i)【输出】可行装载方案 (0代表不取,1代表取)总转载 2012-06-03 14:19:14 · 731 阅读 · 0 评论 -
位运算之美——用+,-和位运算实现整数除法和取模(一)
今天看了一位师兄去年的笔经总结,其中有一题是“不许用%和/来实现求任意数除以3的余数”,我想考官的目的应该是想考察学生对位运算的熟悉程度吧,于是我把题目扩展成“只能用+,-和位运算实现整数除法(/)和取模(%)”,注意:这里不能使用其它的库例程来辅助计算,如log,log10等。在思考这道题目的过程中,我又涉及到了许多二进制相关的题目,如: 判断给定的整数是不是2的整数次幂 判翻译 2013-07-09 18:18:25 · 893 阅读 · 0 评论 -
排序算法
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。 概述内排序的方法有许多种,按所用策略不原创 2013-04-16 08:12:25 · 582 阅读 · 0 评论 -
后缀数组模板
研究了很久,终于有自己的后缀数组模板了~~~~#include #include #include #define LEN 256void SuffixArray(char *str, int *rank, int *sa, int sz, int len) { int v0, v1, v00, v01, p; int *s = (int *)malloc(sz原创 2013-03-26 15:44:24 · 599 阅读 · 0 评论 -
位图
位图是一种常用的数据结构,常用于排序和数据压缩,本文介绍位图的实现。#define WORD 32#define SHIFT 5 ////移动5个位,左移则相当于乘以32,右移相当于除以32取整#define MASK 0x1F //16进制下的31#define N 10000000int bitmap[1 + N / WORD];/* * 置位函数——用"|"操作符,i&M原创 2013-03-21 16:15:37 · 626 阅读 · 0 评论 -
并查集
本文转载自: http://www.ahathinking.com/archives/10.html昨天和今天学习了并查集和trie树,并练习了三道入门题目,理解更为深刻,觉得有必要总结一下,这其中的内容定义之类的是取自网络,操作的说明解释及程序的注释部分为个人理解。并查集学习:l 并查集:(union-find sets)一种简单的用途广泛的集合. 并转载 2013-03-21 16:07:38 · 760 阅读 · 0 评论 -
全排列的算法思想和实现
所谓全排列,就是将集合中元素的所有排列情况依次输出。比如{1、2、3}的全排列为:123、132、213、231、312、321,共6种,满足计算公式N!(N为集合中元素个数,不重复)。当元素不重复时,全排列采用递归思想较容易实现,它的递归公式推导步骤类似:1、要求得123的全排列,只需求得:1并上23的全排列(1 23, 1 32),2并上13的全排列(2 13, 2 31),3并上12的全排列转载 2013-03-14 20:41:32 · 979 阅读 · 0 评论 -
八大排序算法
1、 插入排序(1)直接插入排序//a[]从0起,时间复杂度为:O(n^2)void insert_sort(int a[], int length){ int i, j; int temp; for(i = 1; i < length; i++) { temp = a[i]; j = i - 1;原创 2012-08-10 07:27:27 · 527 阅读 · 0 评论 -
十大常用数据结构
一、栈: 1、后缀表达式的求值; 2、中缀到后缀表达式的转换; 3、深度优先搜索的非递归实现; 4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlgn)算法。 二、队列: 1、树的层序遍历; 2、广度优先搜索; 3、Bellman-Ford算法的SPFA实现; 4、网络流中FF算法的Edmonds-Karp实现,以及Preflo转载 2012-10-06 21:55:28 · 850 阅读 · 0 评论 -
正则表达式
IP:^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}$原创 2014-07-16 06:29:37 · 548 阅读 · 0 评论