自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 正则表达式

特殊符号代表意义[:alnum:]英文字母大小写字符及数字,即0-9,A-Z,a-z[:alpha:]任何英文大小写字符,即A-Z,a-z[:blank:]空格键与[tab]键[:cntrl:]键盘上面的控制键,即包括CR,LF,Tab,Del

2014-11-23 19:36:41 431

原创 股票买进卖出问题—百度实习招聘面试题

2014年百度暑期实习招聘被问到

2014-05-06 22:08:48 1008

原创 字符型IP地址与整型之间转换

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。1.字符型IP地址转换为整型。即给定一个IP地址将其转换成

2013-10-08 22:00:53 1620

原创 单源最短路径—Bellman-Ford和Dijkstra算法

本文主要讲解《算法导论》中的单源最短路径问题,主要的两种算法是:Bellman-Ford和Dijkstra算法。Bellman-Ford算法是对图中的所有的边进行|V|-1次的松弛;Dijkstra算法对图中的边进行一次松弛。文中给出为什么这样做就可以解决单源最短路径问题。并给出程序。

2013-09-26 21:02:36 1102

原创 最小生成树—kruskal算法和prim算法

最小生成树的两种贪心策略:kruskal算法和prim算法,文中主要讲述两种算法的原理,同时侧重在编程时如何处理树的合并,采用在结点添加标示符flag,使得编程简单。

2013-09-25 20:12:58 918

原创 图的广度优先搜索和深度优先搜索

本程序主要是参考:算法导论(第三版),分析过程就省略了。grsph.h#pragma once#include#include#includeusing namespace std;templatestruct Node{ Comparable element;//结点的元素 vector*> next; //结点的连接指针,指向多个结点

2013-09-24 19:01:32 572

原创 红黑树

本文详细的讲解了红黑树的插入和删除过程,给出了每种不同情况下如何变化使其满足红黑树的性质,并且结合图解十分详细。最后给出了实现的代码,代码中有注释。看代码前先把每种变化情况搞清楚。

2013-09-19 10:13:05 721

原创 AVL树—平衡二叉查找树

一颗AVL树是其每个节点的左子树和右子树的高度做多差1的二叉查找树。下面几种几种情况需要进行调整满足AVL树的性质。1.在K3节点左子树或右子树进行一次插入,如下图1,导致了K1节点出现高度不平衡,此时采用单旋调整:具体做法,抓住K2节点,使劲的摇动它,在重力的作用下,K2变成新的根,二叉查找树性质告诉我们,在原树中K1>K2,于是在新树中K1变成K2的右儿子,K3和A仍然为K2的左儿子和K1

2013-09-14 11:01:19 580

原创 编程之美-两堆石头的游戏

问题:假设有两堆游戏,两个玩家根据以下规则轮流取石头:每个人每次可从两堆石头中各取数量相等的石头,或者仅从一堆石头中取出任意数量的石头。最后把剩下的石头依次拿光人获胜。两堆石头数量分别为n m。思想:先产生iMIN.h#pragma once#include#includeusing namespace std;struct P{ int x; int y;

2013-06-16 16:33:54 1002 1

原创 编程之美-求数组的子数组之和最大值(该数组首尾相连)

问题:数组A[0],A[1],...,A[n-1]首尾相连,也就是允许找到一段数字(A[i],...,A[n-1],A[0],...A[j] )使其和最大。求解思想:将其分成两类1.解没有跨越A[n-1]到A[0] 2.解跨过A[n-1]到A[0]。接下来主要讲解第二中情况,编程之美书上的第二中求解是错误的。举个例子:100   1  2  3   -90  2   1,按照书上的解法:从

2013-06-16 16:14:08 651

原创 编程之美-找符合条件的整数

问题:任意给定一个正整数N,求一个最小的正整数M,使得N*M的十进制表示形式中只含有1和0,先证明这样的M是存在的。        下面给出如何求解这样的M呢?代码中主要由find()函数实现的,假若N=3,给出求解过程:其思想就是在中找出N个最小的相等的数,然后它们的和就满足M*N的要求。其求解是:由底向上求解,number:保存数,mod保存余数。(1)先将1放入num

2013-06-16 15:41:41 859

原创 编程之美—寻找最大的k个数

问题:给出N个无序的数,选出其中最大的K个数。最简单的是将N个数进行排序,然后选出其中最大的K个数,但这种方法缺点是假如对上亿个数进行寻找K个最大的数,那么需要把上亿个数存入空间,然后排序,空间复杂度过大。解决方法:采用堆序方法进行,思想:依次输入数,前K个数生成堆序,当输入K+1个数,将这个数与堆中的根结点进行比较,若比根节点大,则替换根结点,然后调用下滤函数percolatedown()调

2013-06-16 14:28:46 604

原创 编程之美—24点游戏

问题:给4张牌,每张的面值在1—13之间,允许其中数值相同的牌。采用加、减、乘、除四则运算,允许中间运算存在小数,并且可以使用括号,但每张牌只能使用一次,尝试构造一个多项式,使其运算结果为24。 本文主要讲如何使用动态规划实现,给定4个数:A={a0,a1,a2,a3}。采用4位二进制表示集合,当且仅当ai在某一个子集中时,该子集所代表的二进制数对应的第i位为1,否则为0,比如A1={a1,a

2013-06-11 20:12:50 889

原创 回溯算法—n皇后问题

题目网上可以搜索到,直接给出程序,程序很简单。backtrack.h#pragma once#include#includeusing namespace std;struct P{ int x; int y; P():x(0),y(0){}};class Backtrack{public: Backtrack(int m); voi

2013-06-01 20:25:11 561

原创 回溯算法—公路收费点重建问题

问题:当有x1,x2,...xn点,它们位于x轴上。初始点的坐标x1=0,这些点是从左到右给出的,即i>j,则xi>xj。那么可得到两两点之间的距离。d1,d2,...dm。其中m=n(n-1)/2。现在的问题是已知到距离d1,d2,...dm,如何求解x1,x2,...xn?这个问题采用回溯算法实现。比如例子:D={d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12

2013-06-01 19:23:27 1378 1

原创 动态规划算法—最优二叉查找树

问题:给定一组单词w1,w2,...,wn和它们出现的固定概率p1,p2,...pn。问题是要以某种方法在一棵二叉查找树中安放这些单词使得总的期望访问时间最小。注意:二叉查找树中结点的值就是该单词出现的顺序。比如单词输入顺序:a(0.22)  am(0.18)  and(0.20)   egg(0.05)  if(0.25)  the(0.02)  two(0.08),括号里面数字是该单词出现的概

2013-06-01 15:47:43 1489

原创 动态规划算法——最长公共子序列求法

给定序列X={ X1,X2,....Xn }、Y={ Y1,Y2,...Ym }找出它们的最大子序列Z={ Z1,Z2,...Zk }比如:X={ A,B ,C,B,D,A,B }、Y={ B,D,C,A,B,A },它们的最大子序列Z={ B,C,B,A}。      c[i][j]表示长度为i的X和长度为j的Y的最长子序列,c[0][j]=0,c[i][0]=0,任一序列与空序列的最长

2013-05-26 17:02:22 929

原创 动态规划算法——矩阵乘法的顺序安排

动态是解决递归过程的大量冗余计算的缺点,其采用把子问题的答案系统的记录在一个表中,当计算后面的问题是用到前面的结果可以直接到表中查找,而无需再递归重新计算。    比如:斐波那契数是一个常见的递归计算过程,采用递归算法程序效率非常低。递归算法是模仿递归过程的,计算F(n),存在一个对F(n-1)和F(n-2)的调用,求解F(n-1),要对F(n-2)、F(n-3)的调用,存在2次对F(n-2)

2013-05-26 15:59:54 4091

原创 分治算法-最近点问题

在平面上输入一系列的点,找出其中距离最近的两个点,并将其坐标输出。一种比较简单的做法是采用2个for循环计算每2个点之间的距离,找出最短的那个。此方法是傻瓜式的,耗费时间为O(N^2)。采用分治算法:平面上的所有点可以从中间分成2部分,那么最短距离就可能有3中情况,(1)出现在左半平面的2个点距离最近;(2)出现在最右边的平面的2个点的距离最近;(3)两个点,1个在左半平面,1个在右半平面,它们之

2013-05-24 21:29:53 746

原创 贪心算法-赫夫曼编码

赫夫曼编码主要用于数据文件的压缩,用满二叉树实现的,字符都位于树叶上。赫夫曼算法:在输入的字符结点中,选择出现频率最小的2个结点,合并两个结点,形成新的树。新树频率为2个结点的频率之和。在新结点和原始结点(除去合并的2个结点)再寻找出现频率最小的个结点合并。依次下去,直到所有结点都合并在一个树上,此时生成的树为赫夫曼编码树。a(10)  e(15)    i(12)    s(3)     t

2013-05-24 20:50:40 758

原创 贪心算法-节目安排

贪心算法分阶段工作,在每一个阶段,可以认为所做的决定是最好的,而不考虑将来的后果,这就意味着选择的是某个局部最优。当算法终止时,我们希望通过每次局部的最优最终得到全局最优。     节目表安排问题:比如某个学校举办元旦晚会,共有n个节目,假设每个节目开始时间start和结束时间end是已知的。由于时间的限制,晚会的整体时间是有限的,假设为m_time,那么怎样在总时间限制下尽量安排最多的节目。

2013-05-19 21:05:28 1240

原创 排序(插入排序、希尔排序、堆排序、归并排序、快速排序法)

(1)插入排序      假设位置0到P-1上的元素是已经排好序的,对于P上的元素,其与0到p-1位置元素比较,找到小于P位置元素j把j+1到p-1元素往后移动一个位置,把p位置元素插入,这样就完成0到p位置元素的排序,依次类推,最终完成排序。(2)希尔排序     使用一个增量序列h,每次排序都使得A[i](3)堆排序       先把数组元素按堆的顺序存储(采用堆的思想,与

2013-05-19 14:50:11 675

原创 二叉堆

堆序的性质:对于每一个结点X,X的父亲中的键小于或等于X中的键。其可以用一个数组表示而不需要使用链表,对于数组任一位置i上的元素,其左儿子在位置2i上,右儿子在左儿子后的单元2i+1中,它的父亲在位置i/2上。一些基本的操作:(1)insert(插入)     将一个元素X插入并不破坏堆序(arra),在堆最后位置建立一个空穴hole,判断X与其父亲位置元素的大小,若x(2)remov

2013-05-18 22:07:01 484

原创 二叉查找树

二叉查找树性质:对于树中的每个结点X,它的左子树中所有项元素的值小于X中的项,而它的右子树中所有项的值大于X中的项。简单的介绍一些操作:(1)insert (插入)     先遍历树,如果找到要插入的值X,则什么也不做。否则将X插入到遍历路径的最后一点上,其算法实现采用递归。X小于t->element,向左子树遍历,X大于t->element,向右子树遍历,直到t==NULL,插入X。

2013-05-18 21:29:12 470

转载 递归算法详解

转载:http://www.cnblogs.com/zhangqqqf/C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。     许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任

2013-05-05 22:00:35 463

原创 Notification介绍

Notification是显示在手机状态栏的信息——手机状态栏位于手机屏幕的最上方,那里一般显示手机当前的网络状态、电池状态、时间等,Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notificaton。下面介绍如何实现:(一)创建notification,与其相关的两个类:(1)Notification(icon,t

2013-04-05 13:40:31 602

原创 Service学习(二)之bindService 的实现

(1)创建一个Service:package com.syz.bindservice;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.util.Log; public class

2013-04-04 16:24:50 588

原创 Service的学习(一)

介绍:service在后台执行,没有与用户交互的界面,常见的例子:音乐播放器。启动的方式:(1)startService():调用者和服务之间没有联系,即使调用者退出了,服务仍然进行[onCreate()->onStartCommand()->startService()->onDestory()],主要用于启动一个服务执行后台任务,Service和访问者之间不进行通信、数据交换,停止服务

2013-04-04 14:58:25 500

数学之美完整版

数学之美——吴军,将复杂的难懂的算法讲解的通俗易懂

2013-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除