- 博客(19)
- 资源 (6)
- 收藏
- 关注
原创 动态规划 - 最长公共子序列 - 最长公共子串 - 最长不重复子串 - 最长递增子序列 - 最长回文子串
源自:http://blog.csdn.net/chuan6099/article/details/8952978动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有
2013-06-05 21:29:25 1973 3
原创 C++ - 容器
1)vectorvector与数组在数据安排以及操作上相似,唯一区别在与空间运用的灵活性上。数组是静态空间,vector是动态空间。2)list元素的插入和删除时间是常数时间。list是双向链表,每个节点结构包括数据data,前驱指针prev和后继指针next。3)deque双端队列。头尾都可以插入删除数据,时间是常数。非必要,一般用vector而不是dequede
2013-06-30 20:45:29 551
原创 coding - 判断整数序列是不是二元查找树的后序遍历结果
题目描述:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回
2013-06-24 18:04:04 757
原创 coding - 单链表相交问题
题目描述:输入两个单链表,判断是否相交,输出第一个相交节点。设节点结构:struct Node{ int value; Node *next;};分析:这里需要考虑的问题是该链表是否有环。链表相交,则从相交节点开始,之后的数据节点共享(值和指针都相同)。1)先讨论无环情况若只是需要判断是否相交,则判断最后一个节点是否相等即可。bool IsI
2013-06-24 12:14:52 683
原创 进程-线程-同步-互斥
线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。 同步这个词是从英文synchronize(使同时发生)翻译过来的,一个很容易引起误解的词。 线程同步的真实
2013-06-20 15:51:53 1225
原创 字典树(trie树)
Trie树又称字典树、单词查找树,是一种树形结构,用于保存大量的字符串。优点:利用字符串的公共前缀来节约存储空间。缺点:如果Trie树中存在大量字符串,并且这些字符串基本上没有公共前缀,那么相应的Trie树将非常消耗内存空间,Trie的缺点是空指针耗费内存空间。基本性质:(1)根节点不包含字符,除根节点外的每个节点只包含一个字符。(2)从根节点到某一个节
2013-06-18 17:30:12 995
原创 八皇后问题
八皇后问题: 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击, 即任意两个皇后都不能处于同一行、同一列或同一斜线(45度)上, 问有多少种摆法。由已知条件可知,每行有且只有一个皇后。用一个一维数组存放每行上皇后的位置。 此数组中,下标表示行数,元素表示列数(也即本行上皇后的位置)。从第一行开始遍历每行不产生冲突的皇后位置。 当第i行没有正确位置可以放的话,那么将第i-1行
2013-06-18 10:41:50 744
原创 数据结构 - 归并排序
归并排序(Merge sort,合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并操作的过程如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,
2013-06-14 18:01:46 867
原创 数据结构 - 冒泡排序
冒泡排序(Bubble Sort,泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序对个项目需要O()的比较次数,且可以原地排序。尽管这个算法是最简单了解和实作的排序算
2013-06-13 22:30:57 990 1
原创 数据结构 - 希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位原始的算法实现在最坏的情况下需要进行O(n2)的比较和交换。V. Pratt的书对算法进行了少量修改,可以使得性
2013-06-13 18:57:40 1695 2
原创 数据结构 - 插入排序
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。体算法描述如下:从第一个元素开始,该元
2013-06-13 17:34:39 773
原创 数据结构 - 选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少
2013-06-13 17:05:18 709
原创 数据结构 - 堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤
2013-06-13 16:07:56 1273 2
原创 字符串->整数atoi,整数->字符串itoa
1.自定义atoi函数,即实现将字符串转化为整数#include #include //#define INT_MAX 2147483647//#define INT_MIN -2147483648using namespace std;//function one ( cannot solve overflow !!! )int StrToInt(const char* str)
2013-06-12 21:04:56 763
转载 C/C++的64位整型 不同编译器间的比较
from:http://blog.csdn.net/hongxdong/article/details/5559312//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int TSint64; //typedef u
2013-06-12 20:48:34 769
转载 KMP字符串模式匹配详解
来自CSDN A_B_C_ABC 网友KMP字符串模式匹配详解KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一.简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T
2013-06-12 17:16:08 731
原创 char,short,int,long等范围
from : http://www.cnblogs.com/A123456A/archive/2013/01/25/2876634.htmlchar -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +214748
2013-06-05 23:41:29 1277
转载 算法导论 - 动态规划 - 钢条切割
源自:http://blog.csdn.net/wang2124596/article/details/8937004什么是动态规划: 动态规划包含了分治法的思想——将原问题分解为规模较小,但是类似于原问题的一系列子问题分而求之,并最终得到原问题的解。 而动态规划又与分治法不同:分治法通常用来求解原问题中的子问题互不相交——不同的子问题没有或极少有相同的子子
2013-06-02 16:08:11 1185
数据结构与算法分析-c语言描述
2013-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人