算法与设计
文章平均质量分 65
beginTheWorld
相当于别人读初中的水平我要读大学
展开
-
大数据处理算法(非分布式处理)
题目都是重网上收集而来1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,原创 2013-08-24 16:50:03 · 654 阅读 · 0 评论 -
开方 牛顿迭代公式
牛顿迭代公式设r是f(x) = 0的根,选取x0作为r的初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'原创 2013-09-21 15:42:35 · 1561 阅读 · 0 评论 -
快速判断是否是兄弟字符串
题目如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何迅速匹配兄弟字符串?字符串有a--Z组成。初始化两个数据 int count_one['Z'-'a'+1],count_two[] 为0for(i=0;i{ count_one[*(str1++)-'a']++; count_two[*(str2++)-a]++;}最后判断co原创 2013-09-20 20:21:10 · 928 阅读 · 0 评论 -
伪随机解决真随机问题
从文件中随机取一行数据如果先统计文件有多少行,再根据rand() % 行数选择对应行也是可以行的,但效率显然会有点低了。有没有一种方法可以只遍历文件一次了?请看代码:[cpp] view plaincopy//从文件中取机选取一行 #include #include #include #include int转载 2013-07-09 21:48:26 · 1060 阅读 · 0 评论 -
高效率安排见面会问题(比编程之美的解法复杂度低n-1个数量级)
在编程之美中,有一道高效安排见面会的问题问题描述如下 已知有n位学生,他们分别对M个研究项目中的若干个干兴趣,每个见面会的时间为T,每个学生都能参加自己感兴趣的所有见面会,如何安排时间总时间最短??编程之美的解法把该问题转化成图染色的问题,每个见面会为一个点,如果有个同学对其中两个见面会感兴趣,那么这两点就有一天联系,染色问题:就是如果两个点之间有连线,那么他们要用不同的颜原创 2013-08-26 22:39:46 · 877 阅读 · 0 评论 -
poj 3281,最大流,牛吃食物问题
DescriptionCows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others.Farmer John has cooked fabulous meals for his cows, but he forgot原创 2013-09-09 15:14:22 · 839 阅读 · 0 评论 -
单链表中通过某一结点指针删除该结点
删除p指向的结点:思路:把p的下个结点内容拷贝到p,然后把删除p的下个结点;/*考虑的情况:1. p是空2.p 指向单链表最后一个结点;3.p 指向单链表的头结点*//*input :P,将要删除结点的指针output : 1(成功),0(失败),-1(失败,但是把结点删除了)功能:删除链表中的结点*/int deleteTheNodeInL原创 2013-08-28 10:26:17 · 1190 阅读 · 0 评论 -
雷达覆盖岛屿的问题
acm的题在地平线两侧,存在着岛屿,现在需要安装对岛屿进行监控,雷达的辐射半径是 r , 岛屿以坐标表示,地平线为X轴,用最少的雷达监控所有的岛屿此题需要先建模以岛屿为圆心,半径为r画圆,与X轴相交于两点形成一个闭区间[a1 b1], [a2 b2] [a3 b3] [an bn];下标为岛屿的编号, [an bn]表示以岛屿n为圆心原创 2013-08-30 19:07:03 · 1099 阅读 · 0 评论 -
链表中倒数第K个元素,
/*在链表中找倒数第k个元素考虑的问题 :链表可能会空,K可能会很大,超过链表的个数,链表的结点个数超过int 表示的范围*/LinkNode *findTheLastKInlist (LinkNode *head,int k){ LinkNode *tem=NULL; tem=head; LinkNode *pLastK=NULL;//the last kth node p原创 2013-08-28 09:46:28 · 476 阅读 · 0 评论 -
一个数组实现三个栈
基本思想是:第一个栈 为数组头,栈增长方向向上;第二个栈,数据尾,栈增长方向向下,第三个栈,在数组中间,栈增长方向向下;第一个与第二个栈不用搬迁,因为他们都在数组的端,第三个栈,需要搬迁,来满足三个栈对空间的需求,搬迁的策略:采用慵懒的策略,只有三个栈中其中一个进行push操作是,如果没有足够的空间,才搬迁第三个栈;代码:class threeStackUs原创 2013-08-28 17:00:49 · 947 阅读 · 0 评论 -
链表表示的数字相加
题目You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a fu原创 2013-08-28 13:18:05 · 718 阅读 · 0 评论 -
音频指纹的算法--飞利浦解决方案
这个音频指纹暂时用来做同源音频聚类,判断歌曲是否是同一源的,这里先介绍下飞利浦的方案-------A Highly Robust Audio Fingerprinting System,这个算法是在他上面的优化,通过能量差分的关系,求得音频两个帧之间的能量关系,产生指纹。公共傅里叶变换成频率信息,把300 ---- 2000HZ 频率映射到33个频率带,计算各频率带的能原创 2014-02-28 13:33:35 · 5752 阅读 · 2 评论