为您找到搜索结果:1674个
算法-猴子搬香蕉
2018年01月28日19:59:15阅读数:220问题描述: 一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉。它每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里呢? 提示:他可以把香蕉放下往返的走,但是必须保证它每走一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,拿着n根香蕉走回去重新搬50根。 程序实现: 接口: publicinterfaceMonkeysMoveBananas{ /** * *@paramnum总数量如100 *@parammaxNum每次最多搬多少个如50个 *@paramdistance距离如50 *@parameatNum每走一米吃的数量,如1个 * *@return到家剩余的数量,或者无法再搬香蕉时剩余的数量 * */ intMove(intnum,intmaxNum,intd...
五大常用算法【转发】
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。二、基本思想及策略 分治法的设计思想...
基于深度学习的人体姿态识别算法总结
from: https://zhuanlan.zhihu.com/p/27657196大概两个月前,接到一个小任务,要做一个深度学习在人体姿态识别领域的一些调研,以前也没做调研相关的事情,连格式怎么写都不知道,前前后后看了接近20篇论文,然后就写下来这篇小总结,感觉都不能算是调研,文章主要列出了一些相关的数据集以及深度学习的方法包括基于无监督学习的行为识别、基于卷积神经网络的行为识别、基于循环神经网络以及一些拓展模型的方法。当然,这里面提到的很多模型都不是最新的技术,还有很多最新的模型和技术都没有包含进来。因为这篇文章写出来已经很久了,所以很多东西记得都有些模糊,这次只是将原来的md文件拿过来排个版,如果有哪里有什么问题,请指正,谢谢。本文首先提出一共17个人体姿态识别相关的数据集及其链接,然后给出9个深度学习在人体姿态识别领域的应用模型,包括其论文提出的思路、模型结构、实验数据集和使用的加速硬件(如果有的话),本文不提供相关的实现方法。3.数据集3.1KTH链接介绍:视频数据集包括六种动作(走、慢跑、快跑、拳击、挥手和鼓掌),所有动作由25个人分别演示,并且融合了四种场景进...
Ceph剖析:数据分布之CRUSH算法与一致性Hash
https://www.cnblogs.com/shanno/p/3958298.html数据分布是分布式存储系统的一个重要部分,数据分布算法至少要考虑以下三个因素:1)故障域隔离。同份数据的不同副本分布在不同的故障域,降低数据损坏的风险;2)负载均衡。数据能够均匀地分布在磁盘容量不等的存储节点,避免部分节点空闲部分节点超载,从而影响系统性能;3)控制节点加入离开时引起的数据迁移量。当节点离开时,最优的数据迁移是只有离线节点上的数据被迁移到其它节点,而正常工作的节点的数据不会发生迁移。对象存储中一致性Hash和Ceph的CRUSH算法是使用地比较多的数据分布算法。在Aamzon的Dyanmo键值存储系统中采用一致性Hash算法,并且对它做了很多优化。OpenStack的Swift对象存储系统也使用了一致性Hash算法。假设数据为x,存储节点数目为N。将数据分布到存储节点的最直接做法是,计算数据x的Hash值,并将结果同节点数目N取余数,余数就是数据x的目的存储节点。即目的存储节点为 Hash(x)%N。对数据计算Hash值的目的为了可以让数据均匀分布在N个节点中。这种做法的一...
(转)最短路径Floyd算法
本文转自:https://blog.csdn.net/jack_20/article/details/78031310Floyd算法求所有顶点到所有顶点的最短路径,时间复杂度也为O(n^3),但其算法非常简洁优雅。为了能讲明白该算法的精妙所在,先来看最简单的案例。下图左部分是一个最简单的3个顶点连通网图。 先定义两个数组D[3][3]和P[3][3],D代表顶点到顶点的最短路径权值和的矩阵,P代表对应顶点的最小路径的前驱矩阵。在未分析任何顶点之前,我们将D命名为D-1 ,其实它就是初始的图的邻接矩阵。将P命名为P-1,初始化为图中所示的矩阵。首先,我们来分析,所有的顶点经过v0后到达另一顶点的最短距离。因为只有三个顶点,因此需要查看v1->v0->v2,得到D-1[1][0]+D-1[0][2]=2+1=3。D-1[1][2]表示的是v1->v2的权值是5,我们发现D-1[1][2]>D-1[1][0]+D-1[0][2],通俗的讲就是v1->v0->v2比直接v1->v2距离还要近。所以我们就让D-1[1][2] ...
标准粒子群优化(Particle Swarm Optimization, PSO)算法
先来唠唠什么是最优化问题,就是在满足一定的约束条件下,找到一组合适参数,使得系统的某些性能指标(最优性度量)达到最值。迭代提供了一种求解最优化问题的基本思路:给定初始点,按照某种特定规则生成点列。若是有穷点列,那最后一个点是最优点。若是无穷点列,则极值点是最优点。好的优化算法能稳定的接近局部极值点,并迅速收敛,直到满足规则时终止。 然后说说PSO的发展史:Reynolds假设每只鸟都遵循一定的行为准则,提出了Boid(Bird-oid)模型。每只人工鸟称为Boid,可以感知周围一定范围内其它Boid的飞行信息,作为决策机构的输入,再结合自身的当前状态(空间位置、飞行方向、飞行速度)作出下一步决策。个体应遵循3条规则:(1)避免碰撞;(2)速度一致;(3)中心集群。由Boid组成的系统完全自下而上地运行。Hepner和Grenander在Boid模型上,进一步加入了“鸟群受栖息地吸引”的特点。开始时,...
版本号大小比较算法
版本号之间比较大小,本质上是比较字符串之间的关系。这里给定两个版本号,你一定能迅速地区分出大小:0.0.20.0.3想要让计算机程序分辨她们的关系,可以直接使用strcmp()函数获取返回值,如果你在iOS系统下编程,也可以使用NSString类提供的-(NSComparisonResult)compare:(NSNumber*)decimalNumber方法。但如果版本进化成下面这样,上面所说的API一定会产生错误的结果。2.7.14.23452.12.8.1234因为单纯的字符串比较大小的依据是每个字符的ASCII码。程序会认为字符7比字符1大,结果就是第一个版本号大于第二个版本号,这是错误的。因此在识别之前,有必要了解一下版本号的组成部分,以及每一个数字的意义,这里已GUN风格的版本号作为说明。版本号大致以下几个部分组成:主版本号次版本号修正版本号编译版本号示例:3.5.20.9527在比较版本号时,正确的做法应该是,主版本号和主版本号比较,次版本号和次版本号比较等等。所以算法的核心应该是分离出版本号的各个组成部分。由此产生的算法会有多种。这里列举一个方式最简单粗暴的C语言代码:...
**PHP随机数算法
<?php$tmp=range(1,30);print_r(array_rand($tmp,10));?>输出:Array([0]=>6[1]=>8[2]=>13[3]=>16[4]=>17[5]=>20[6]=>21[7]=>22[8]=>28[9]=>29) -----------------------------------------参考:无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下。方法一: 复制代码代码如下:<?php $numbers=range(1,50); //shuffle将数组顺序随即打乱 shuffle($numbers); //array_slice取该数组中的某一段 $num=6; $result=array_slice($numbers,0,$num);&n...
PHP 标准AES加密算法类
分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。 <?php/***AES128加解密类*@authordy**/defined('InEjbuy')orexit('AccessInvalid!');classAes{//密钥private$_secrect_key;publicfunction__construct(){$this->_secrect_key='MYgGnQE2jDFADSFFDSEWsdD';}/***加密方法*@paramstring$str*@returnstring*/publicfunctionencrypt($str){//AES,128ECB模式加密数据$screct_key=$this->_secrect_key;$screct_key=base64_decode($screct_key);$str=trim($...
PHP完整的AES加解密算法使用及例子(256位)
依赖PHP自身的mcrypt扩展 <?phpclassaes{//CRYPTO_CIPHER_BLOCK_SIZE32private$_secret_key='default_secret_key';publicfunctionsetKey($key){$this->_secret_key=$key;}publicfunctionencode($data){$td=mcrypt_module_open(MCRYPT_RIJNDAEL_256,'',MCRYPT_MODE_CBC,'');$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);mcrypt_generic_init($td,$this->_secret_key,$iv);$encrypted=mcrypt_generic($td,$data);mcrypt_generic_deinit($td);return$iv.$encrypted;}publicfunctiondecode($data){$td=mcrypt_modul...
常用对称加密算法(DES/AES)类(PHP)
看注释,啥也不说了,欢迎各种跨平台测试! /** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(字节长度8/16/32) * 支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit) * 支持模式:CBC/ECB/OFB/CFB * 密文编码:base64字符串/十六进制字符串/二进制字符串流 * 填充方式: PKCS5Padding(DES) * * @author: linvo * @version: 1.0.0 * @date: 2013/1/10 */ class Xcrypt{&nb...
随机字符串生成算法
IOS算法:chardata[NUMBER_OF_CHARS]; for(intx=0;x<NUMBER_OF_CHARS;data[x++]=(char)('A'+(arc4random_uniform(26)))); return[[NSStringalloc]initWithBytes:datalength:NUMBER_OF_CHARSencoding:NSUTF8StringEncoding]; JAVA实现: 给定一个字符集合,给定随机生成的字符串的长度,即可随机生成字符串;比如{'a','.....,'z'}及长度5,则随机生成一个长度为5的字符串; [java] viewplaincopy package xiazdong.util; import java.util.Random; /*根据给定的char集合,生...
给MD5加上salt随机盐值加密算法实现密码安全的php实现
给MD5加上salt随机盐值加密算法实现密码安全的php实现如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。加上salt后就会难上很多可以一定程度上解决问题,即便是黑客获得了其中的salt和最终密文,破解也是相当麻烦的。PS: 一般都是加密后的数据再存入到数据库的,安全的数据是不可逆的,即数据库里面的数据即使你知道他是通过md5,加盐md5,base64等算法加密进去的也不可直接反推出内容,一般是通过输入的内容加上加密算法后得出的跟数据库里面对比。很多破解是用社工库进行撞库对比,你的帐号密码在其他不安全网站给破解后拿来到其他网站尝试撞库。如何加点盐(salt)?为了加强MD5的安全性加入了新的算法部分即加盐值,然后散列,再比较散列值,已确定密码是否正确。加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字、字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的:1).得到明文的值2).进行计算获取MD5明文hash值3).随机生成加盐值并插入4).MD5插入加盐值得到的h...
[算法天天练]递归查找和非递归查找
//Data为要查找的数组,x为待查找数据值,beg为查找范围起始,last为查找范围终止//非递归法intBiSearch(intdata[],constintx,intbeg,intlast){intmid;//中间位置if(beg>last){return-1;}while(beg<=last){mid=(beg+last)/2;if(x==data[mid]){returnmid;}elseif(data[mid]<x){beg=mid+1;}elseif(data[mid]>x){last=mid-1;}}return-1;}//递归法intIterBiSearch(intdata[],constintx,intbeg,intlast){intmid=-1;mid=(beg+last)/2;if(x==data[mid]){returnmid;}elseif(x<data[mid]){returnIterBiSearch(data,x,beg,mid-1);}elseif(x>data[mid]){returnIterBiSearch(da...
使用递归算法写一段程序
intFbi(inti){ if(i<2) returni==0?0:1; returnFbi(i-1)+Fbi(i-2);} ...