算法
风 先生
这个作者很懒,什么都没留下…
展开
-
洗牌算法shuffle
将原来数组的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现。很容易想到,需要用到随机数函数,而且应该是一个平均分布的随机数函数,还需要一个不放回的采样的生成模式。(1)random.seed([x]) 伪随机数生成模块。如果不提供 seed,默认使用系统时间。使用相同的 seed,可以获得完全相同的随机数序列,常用于算法改进测试。>>>from random import转载 2016-09-01 22:48:00 · 7127 阅读 · 0 评论 -
solution of POJ: 1328.Radar Installation
DescriptionAssume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locati原创 2016-11-13 23:18:08 · 480 阅读 · 0 评论 -
solution of POJ 2376.Cleaning Shifts
DescriptionFarmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores around the barn. He always wants to have one cow working on cleaning things up and has divided the d原创 2016-11-13 18:17:12 · 468 阅读 · 0 评论 -
solution of POJ:3187.Backward Digit Sums
3187.Backward Digit SumsDescriptionFJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N <= 10) in a certain order and then sum adjacent numbers to produce a new原创 2016-11-12 23:16:06 · 613 阅读 · 0 评论 -
solution of LeetCode:146 LRU Cache
LeetCode:LRU CacheDesign and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (will always be positive) o原创 2016-11-08 22:50:37 · 428 阅读 · 0 评论 -
从一个未知容量的投票木箱中,随机抽取m张投票
昨天晚上参加了喜马拉雅的笔试,看完这题我一脸愣逼,当时的第一个想法是类似线段树,每次从m个数中随机一个数进入到上一层。。。最后发现要保证等概率的问题对长度实质是由要求的。回去果断百度,发现这题其实在11年的百度笔试题中就出现过,惭愧。原题大概是这样的:一个服务器一天内会收到很多request,但是服务器只能存放m个request,试设计一种算法并证明,使得在时时的reqest中选择m个保存,并保证最原创 2016-11-01 11:43:57 · 410 阅读 · 0 评论 -
判断一棵二叉树是否为二叉搜索树(BST)
这里先简单介绍一下二叉查找树的性质: 递归定义节点的左子树中任意节点值小于根节点的值,节点的右子树中任意节点值大于根节点,且当前节点左右子树都必须是二叉查找树,不允许存在重复节点。 假设:节点的数据结构:struct node{ int value; node* left; node* right;};方法1(错误示范:自己踩的坑)首先BST是一个递归定义:这样我们首先原创 2016-11-11 23:11:23 · 28209 阅读 · 6 评论 -
opencv 分水岭算法
分水岭在地理学上就是指一个山脊,水通常会沿着山脊的两边流向不同的“汇水盆”。分水岭算法是一种用于图像分割的经典算法,是基于拓扑理论的数学形态学的分割方法。如果图像中的目标物体是连在一起的,则分割起来会更困难,分水岭算法经常用于处理这类问题,通常会取得比较好的效果。 那我们先来看一下opencv当中,分水岭算法watershed的实现。 opencv的watershed是在Meyer, F.Col原创 2016-11-06 01:07:43 · 5857 阅读 · 2 评论 -
矩阵运算——平移,旋转,缩放
虹软笔试的时候又遇到了一个图像旋转的问题。特此记下面是3类基本的2D图形变换。 1.平移设某点向x方向移动 dx, y方向移动 dy ,[x,y]为变换前坐标, [X,Y]为变换后坐标。 则 X=x+dx;Y=y+dy; X = x+dx; Y = y+dy;以矩阵表示[X,Y,1]=[x,y,1]⎡⎣⎢10dx01dy001⎤⎦⎥[X,Y,1]=[x,y,1] \begin{bmatrix}转载 2016-11-08 23:20:28 · 23971 阅读 · 2 评论 -
lower_bound/upper_bound(STL)
其实我们这是以一个简单的算法题开始的: 一个存在重复数据的有序数组A,现在给定一个数字key,我要找到数组中与该给定值差的绝对值最小的那个数的最开始的位置。 case: 给定数组A:1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 6 给定数值key:5 输出:9(即第一个4的位置)结题思路 : 题意要求我们返回数组A中与该给定的Key的差的绝对原创 2016-10-26 20:42:50 · 376 阅读 · 0 评论 -
opencv 距离变换
二值图像距离变换的概念由Rosenfeld和Pfaltz于1966年在论文中提出,目前广泛应用于计算机图形学,目标识别及GIS空间分析等领域,其主要思想是通过表识空间点(目标点与背景点)距离的过程,就是通过使用两遍扫描光栅算法可以快速计算一个图像中非零像素点到最近的零像素点的距离,也就是到所有零像素点的最短距离,最终将二值图像转换为灰度图像。距离变换按照距离的类型可以分为欧式距离变换(Eudlide原创 2016-11-05 23:47:08 · 4830 阅读 · 1 评论 -
拓扑排序的原理及其实现
这里要从一道题目开始说起题目大意:我们的系统现在有一连串的事务需要处理,但事务之间存在依赖性,问我们的事务应该以怎样的顺序进行处理。 第一行读入两个整数,节点总数m,依赖项的个数n;接下来读入n行数据,每行数据:A size BCDE,表示BCDE完成以后才能处理A,size表示接下来的节点个数输入: 13 11 1 1 0 5 2 0 3 0 1 2 3 1 2 4 2 5 6 6原创 2016-11-05 16:33:48 · 867 阅读 · 0 评论 -
两个矩形的交并比(IOU)
两个矩形的交并比(IOU)由于最近的项目里面要用到,虽然是个小东西,但还是来记录一下.我们先来看下IOU的公式:IOU=area(RIOT⋂RIOG)area(RIOT⋃RIOG) IOU=\frac{area(RIO_T\bigcap RIO_G)}{area(RIO_T\bigcup RIO_G)} 现在我们知道矩形T的左下角坐标(X0,Y0)(X_0,Y_0),右上角坐标(X1,Y1)原创 2016-10-21 21:53:03 · 24037 阅读 · 7 评论 -
Φ(x)累积密度函数的C ++实现
正态分布函数正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为: X∼N(N(μ,σ2),σ2)X∼N(N(μ,σ2),σ2)X∼N(N(μ,σ^2),σ^2) 则其概率密...原创 2018-06-23 17:12:51 · 3004 阅读 · 0 评论