
算法&数据结构
老莫1688
生命不息 学习不止
展开
-
一笔画问题(搜索)
一笔画问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N<=10)表示测试数据的组数。每组测试数据的第一行有两个正整数P,Q(P<=1000,Q&...转载 2014-09-02 09:58:44 · 763 阅读 · 0 评论 -
java与opencv结合,进行人脸检测
示例工程JavaOpenCvjava使用opencv需要调用opencv的dll库,并且相应的jar包和dll版本要相同。 项目 下载路径http://download.csdn.net/detail/moshenglv/8328365注意事项:1、项目中引入jar包 javacpp.jar javacv.jar opencv-246.jar,在上面链接中下载的项目...原创 2015-01-05 13:20:12 · 2176 阅读 · 0 评论 -
【图】图的遍历及实现
欢迎关注公众号:----------------------------------------------正文---------------------------------------------------- 一:图的分类1:无向图 即两个顶点之间没有明确的指向关系,只有一条边相连,例如,A顶点和B顶点之间可以表示为 <A, B&...转载 2017-06-09 10:54:31 · 21415 阅读 · 0 评论 -
经典算法整理(java实现)
以下从Java角度解释面试常见的算法和数据结构:字符串,链表,树,图,排序,递归 vs. 迭代,动态规划,位操作,概率问题,排列组合,以及一些需要寻找规律的题目。1. 字符串和数组字符串和数组是最常见的面试题目类型,应当分配最大的时间。关于字符串,首先需要注意的是和C++不同,Java字符串不是char数组。没有IDE代码自动补全功能,应该记住下面的这些常用的方法。 [j...转载 2017-05-28 16:37:33 · 453 阅读 · 0 评论 -
【常用经典算法总结系列一】AC自动机
我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题。当然你也可以用KMP算法求出,那么它的时间复杂度为O(c*(m+n)),c:为模式串的个数。m:为模式串的长度,n:为正文的长度,那么这个复杂度就不再是线性了,我们学算法就是希望能把要解决的问题优化到极致,这不,AC自动机就派上用场了。 其实AC自动机就是Trie树的一个活用,活用点就是灌输了kmp的思想,从而再次把时...原创 2016-11-27 15:46:35 · 892 阅读 · 0 评论 -
计算机图形学之画线算法
一,DDA画线算法(easyX库)#include#include// 四舍五入int Round(float x){return (int)(x < 0 ? x - 0.5 : x + 0.5);}// 使用 DDA 算法画任意斜率的直线(包括起始点,不包括终止点)void Line_DDA(int x1, int y1, int x2, int y2, int c...原创 2016-07-22 08:05:56 · 1173 阅读 · 0 评论 -
海明码原理
海明纠错码 海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。 海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后...原创 2016-03-05 14:20:00 · 614 阅读 · 0 评论 -
CRC的校验原理
一、基本原理 CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。二、几个基本概念1、帧检验序列FC...原创 2016-03-05 15:15:03 · 733 阅读 · 0 评论 -
常用校验码(奇偶校验码、海明校验码、CRC校验码)
计算机系统运行时,各个部之间要进行数据交换. 为确保数据在传送过程正确无误,常使用检验码. 我们常使用的检验码有三种. 分别是奇偶校验码、海明校验码和循环冗余校验码(CRC) 。奇偶校验码奇偶校验码最简单,但只能检测出奇数位出错. 如果发生偶数位错误就无法检测. 但经研究是奇数位发生错误的概率大很多. 而且奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。奇偶校验码是奇校验码和偶...原创 2016-03-08 17:41:35 · 2306 阅读 · 1 评论 -
Dijkstra的双栈算术表达式求值算法
注:不考虑乘除优先级,使用括号确定计算顺序 public static double evaluate(String inStr) { Stack<String> ops = new Stack<String>(); //操作符栈 Stack<Double> vals = new Stack<Double...原创 2016-07-05 20:04:19 · 1617 阅读 · 1 评论 -
欧几里德与扩展欧几里德算法
欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。第一种证明: a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因...原创 2015-05-14 10:36:13 · 395 阅读 · 0 评论 -
数据结构的Java实现——顺序表
顺序表: 线性表的顺序表是,指的是用一组地址连续的存储单元一次存储线性表的数据元素。以元素在计算机内“物理位置相邻”来表示线性表中数据元素之间的逻辑关系。只要确定了存储线性表的起始位置,线性表中任何一数据元素都可以随机存取,所以线性表的存储结构是一种随机存取的存储结构。由于高级程序设计语言中的数组类型也具有随机存取的特性,因此,通常都用数组来描述数据结构中的顺序存储结构。优点——随机存储,...转载 2014-08-30 09:05:33 · 589 阅读 · 0 评论 -
括号匹配(小中大括号序列)
括号序列由( )[ ]{ }组成,不合法的括号序列由( { ) },[ } { ],等等。编程实现一个函数,检查一个括号序列是否是合法的括号序列。解法:思路和“后缀表达式的求解”相似。我们借助栈,每读一个括号,如果是左括号,那么入栈,然后继续读下一个括号;如果是右括号,那么就要看看这个右括号和栈顶的括号是否匹配;如果匹配,那么弹出栈顶的括号,继续读下一个括号。当栈变空时,说明此括号序列是合...原创 2018-11-12 12:07:03 · 2121 阅读 · 0 评论