算法
ccfeng2008
这个作者很懒,什么都没留下…
展开
-
枚举排列问题:生成1-n的排列和可重集排列问题
问题1:生成1-n的排列,采用递归,解决思想:先输出所有以1开头的排列,然后输出以2开头的排列....最后输出以n开头的排列问题2:输入数组P,并按照字典序输出所有全排列。注意数组P中的数可能重复。修改问题1中代码即可实现。问题1对应:easyPermutationPrint(int n, int[] A, int cur)函数,问题2:对应peasyPermuta原创 2013-09-29 17:44:09 · 978 阅读 · 0 评论 -
uu-aodv框架分析
首先,有三个路由表,一个uuaodv模块维护的路由信息,用struct expl_entry表示。uuaodv用户空间程序维护的路由表,相对比较复杂,用rt_table表示。linux内核维护的路由表用struct rtable表示,当系统发送数据包时,查找的就是这个路由表。前两个路由表用于对系统路由表的更新。具体结构的不同,参见附录。aodv当然要维护一个路由表,至于为什么要分成内核空间和用转载 2012-05-29 16:11:38 · 2396 阅读 · 0 评论 -
AODV路由维护(定期发送Hello和链路层反馈)
路由维护的方式分为邻居发现和链路层反馈两种。邻居发现是节点周期性的广播TTL=I的HELLO广播报文,收到报文的节点知道发送者是其邻居,这样就维护和其邻居的本地互连性,HELLO报文格式和RREP报文格式相同。如果在一定时间内,节点没有收到邻居的HELLO报文,并且路由表中存在以该邻居作为下一跳的路由表项,节点就会广播RERR报文。链路层反馈是当转发数据报文时,如果在链路层收到下一跳节点路由信息里转载 2012-05-29 17:16:49 · 5201 阅读 · 0 评论 -
Paxos算法深入分析
在分布式系统设计领域,Paxos可谓是最重要一致性的算法。Google的大牛们称All working protocols for asynchronous consensus we have so far encountered have Paxos at their core.可见此算法的地位。网络上讨论此算法的文章多如牛毛,但大多数让人看了之后仍然是一头雾转载 2016-02-29 23:08:57 · 635 阅读 · 0 评论 -
原子操作的实现原理
1. 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。2. 术语定义术语英文解释缓存行Cache line缓存的最小操作单位比转载 2015-10-24 22:36:47 · 6808 阅读 · 0 评论 -
2014年有道研发岗算法题(9月17):规则序列问题
问题描述:括号序列问题(类似平衡符号问题(利用栈实现))。定义如下规则序列(字符串)1.空序列是规则序列2.如果S是规则序列,那么(S)和[S]也是规则序列3.如果A和B都是规则序列,则AB和BA都是规则序列例子:规则序列:()[](())([][])不规则序列([]](]]给出一些由'(',')','[',']'符号组成的,请问至少原创 2013-09-25 16:06:37 · 1137 阅读 · 0 评论 -
2014年有道研发岗算法题(9月17):数对之差
在整数无序数组中,某个数减去它右边的某个数得到一个数对之差,求所等数对之差的最大值,要求时间复杂度不超过O(nlogn)例子{ 3,2,1,5 }的数对最大值为2采用分治算法。把数组分为两部分,最大的数对差要么可能初在数组的左半边,要么出现在右半边,要么出现在左半边的最大数减去右半边的最小数。时间复杂度度为O(nlogn)JAVA具体实现如下(代码不涉及对数组合法性等的检查,实原创 2013-09-25 17:07:07 · 981 阅读 · 1 评论 -
一个骰子,6面,1个面是 1, 2个面是2, 3个面是3,问平均掷多少次能使1、2、3都至少出现一次
题目:一个骰子,6面,1个面是 1, 2个面是2, 3个面是3,问平均掷多少次能使1、2、3都至少出现一次。解:(没学过《组合数学》的请略过)设P(N=n)表示第n次(n>2)抛出后1,2,3都出现的概率,问题要求n的期望E(N=n).掷1的概率p=1/6,掷2的概率q=1/3,掷3的概率r=1/2.C++编程实现如下:#include using namesp原创 2013-09-25 19:38:46 · 2593 阅读 · 0 评论 -
棋盘覆盖问题
【问题】在一个2k×2k (k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4k种,因而有4k种不同的棋盘,图4.10(a)所示是k=2时16种棋盘中的一个。棋盘覆盖问题(chess cover problem)要求用图4.10(b)所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。原创 2013-09-25 19:44:03 · 1062 阅读 · 2 评论 -
0/1 背包问题动态规划
动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。现在解决01背包问题。【问题】一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......原创 2013-09-25 19:50:03 · 2137 阅读 · 1 评论 -
并查集问题:简单java实现
数据结构与算法分析章节Java源码实现public class DisjSets { private int[] s = null; public DisjSets(int num) { s = new int[num]; for (int i = 0; i < num; i++) s[i] = -1; } public void union(int r原创 2013-10-08 16:57:54 · 1306 阅读 · 0 评论 -
java 实现后缀数组及最长回文子串问题
摘要: 后缀数组的java实现。 利用后缀数组来求解最长回文子串问题。关键词: 后缀数组, 倍增算法, 基数排序,height[]数组,最长回文子串参考文献:《后缀数组_处理字符串的有效工具》。part I . 后缀数组中一些相关定义Suffix(i)表示以i开始的后缀, 对于字符串"aabaaaab"来说,Suffix(2)=baaaabRank[i] 表示以Suf转载 2013-10-05 21:59:06 · 2651 阅读 · 0 评论 -
字符串匹配问题:KMP算法
传统字符串匹配和KMP算法转载时请注明来源:http://blog.csdn.net/ccfeng2008JAVA源码如下:/* * @class StringMatching.java * @author ccfeng * @date 2013-10-5 * * */package kmp;import static java.lang.System.原创 2013-10-05 11:59:45 · 777 阅读 · 0 评论 -
栈的应用:平衡符号问题
【问题描述】:初学者在编写代码并且编译时,难免会因为少写了一个')'和被编译器报错。也就是说,编译器会去匹配括号是否匹配。当你输入了一个'(',很自然编译器回去检查你是否有另一个')'符号与之匹配。如果所有的括号都能够成对出现,那么编译器是能够通过的。否则编译器会报错。例如字符序列“(a+b)”是匹配的,而字符序列"(a+b]"则不是。在检测括号匹配的算法中使用到了栈,算法描述如下:创建一原创 2013-09-30 11:41:02 · 1098 阅读 · 0 评论 -
AODV中路由表及控制消息结构(包含aodv开源代码)
1、路由表结构AODV路由协议涉及路由表管理的处理,通常在路由请求发送RREQ过程中建立反向路由,在转发RREP的时候建立正向路由,当然在数据通信的过程中也会涉及到路由表的操作,如出现了路由出错的时候以及路由生命期的更新等。下面对AODV路由条目中的几个重要字段进行介绍:(1)目的节点地址n_dst:用于标志使用此路由的最终目的节点,决定了数据分组转发方向。(2)目的节点序列号rt转载 2012-05-29 15:07:22 · 7074 阅读 · 4 评论