Perl实现高水线算法(解决多值比较问题方法)
"高水线"算法:大水过后,最后一波浪消退时,高水线会标示出所见过的最高水位。
下面看下"高水线"算法在Perl中的运用。
#! /usr/bin/perl; use utf8; sub max { my($max_so_far) = shift @_; #数组中第一个值,暂时当成最大值。 foreach(@_){ #遍历数组@_ if($_>$max_so_far){ #看其它元素是否有比$max_so_far大的值。 $max_so_far = $_;} #如果有话,更新最大值变量 } $max_so_far; } my $_MaxData = &max(2,3,8,5,10); print $_MaxData;
第一行对数组@_进行shift操作,将一个元素2放到最大值$max_so_far变量中,@_中剩下的元素为(3,8,5,10),然后用foreach循环遍历数组,新数组中的第一个元素3比2大,又被移到$max_so_far变量中,依次类推,最后10,就是数组中的最大元素。
相关推荐
-
Perl实现高水线算法(解决多值比较问题方法)
"高水线"算法:大水过后,最后一波浪消退时,高水线会标示出所见过的最高水位. 下面看下"高水线"算法在Perl中的运用. #! /usr/bin/perl; use utf8; sub max { my($max_so_far) = shift @_; #数组中第一个值,暂时当成最大值. foreach(@_){ #遍历数组@_ if($_>$max_so_far){ #看其它元素是否有比$max_so_far大的值. $max_so_far = $_;} #
-
PHP基于回溯算法解决n皇后问题的方法示例
本文实例讲述了PHP基于回溯算法解决n皇后问题的方法.分享给大家供大家参考,具体如下: 这里对于n皇后问题就不做太多的介绍,相关的介绍与算法分析可参考前面一篇C++基于回溯法解决八皇后问题. 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法.这种方法适用于解一些组合数相当大的问题. 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树.算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解.如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向
-
C语言基于回溯算法解决八皇后问题的方法
本文实例讲述了C语言基于回溯算法解决八皇后问题的方法.分享给大家供大家参考,具体如下: 问题描述: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例:在8X8格的国际象棋棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 问题求解: 采用回溯算法,即从第一行开始,依次探查可以放置皇后的位置,若找到,则放置皇后,开始探查下一行:若该行没有位置可以放置皇后,则回溯至上一行,清除该行放置皇后的信息,从该行原本放置皇后的下一个位置开始探查可
-
Python基于贪心算法解决背包问题示例
本文实例讲述了Python基于贪心算法解决背包问题.分享给大家供大家参考,具体如下: 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关. 完全背包问题:给定n个物品和一个容量为C的背包,物品i的重量是Wi,其价值为Vi,背包问题是如何选择入背包
-
java图论普利姆及克鲁斯卡算法解决最小生成树问题详解
目录 什么是最小生成树? 普利姆算法 算法介绍 应用 --> 修路问题 图解分析 克鲁斯卡尔算法 算法介绍 应用场景 -- 公交站问题 算法图解 算法分析 如何判断是否构成回路 什么是最小生成树? 最小生成树(Minimum Cost Spanning Tree),简称MST. 最小生成树要求图是连通图.连通图指图中任意两个顶点都有路径相通,通常指无向图.理论上如果图是有向.多重边的,也能求最小生成树,只是不太常见. 普利姆算法 算法介绍 应用 --> 修路问题 图解分析
-
java图论弗洛伊德和迪杰斯特拉算法解决最短路径问题
目录 弗洛伊德算法 算法介绍 算法图解分析 迪杰斯特拉算法 算法介绍 算法过程 弗洛伊德算法 算法介绍 算法图解分析 第一轮循环中,以A(下标为:0)作为中间顶点 [即把作为中间顶点的所有情况都进行遍历,就会得到更新距离表和前驱关系],距离表和前驱关系更新为: 弗洛伊德算法和迪杰斯特拉算法的最大区别是: 弗洛伊德算法是从各个顶点出发,求最短路径: 迪杰斯特拉算法是从某个顶点开始,求最短路径. /** * 弗洛伊德算法 * 容易理解,容易实现 */ public void floyd
-
java暴力匹配及KMP算法解决字符串匹配问题示例详解
目录 要解决的问题? 一.暴力匹配算法 一个图例介绍KMP算法 二.KMP算法 算法介绍 一个图例介绍KMP算法 代码实现 要解决的问题? 一.暴力匹配算法 一个图例介绍KMP算法 String str1 = "BBC ABCDAB ABCDABCDABDE"; String str2 = "ABCDABD"; 1. S[0]为B,P[0]为A,不匹配,执行第②条指令:"如果失配(即S[i]! = P[j]),令i = i - (j - 1),
-
Python基于分水岭算法解决走迷宫游戏示例
本文实例讲述了Python基于分水岭算法解决走迷宫游戏.分享给大家供大家参考,具体如下: #Solving maze with morphological transformation """ usage:Solving maze with morphological transformation needed module:cv2/numpy/sys ref: 1.http://www.mazegenerator.net/ 2.http://blog.leanote.com
-
JS基于贪心算法解决背包问题示例
本文实例讲述了JS基于贪心算法解决背包问题.分享给大家供大家参考,具体如下: 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 寻找最优解的过程,目的是得到当前最优解 部分背包问题:固定容积的背包能放入物品的总最大价值 物品 A B C D 价格 50 220 60 60 尺寸 5 20 10 12 比率 10 11 6 5 按比例降序尽可能多放入物品 function greedy(values, weight
-
JS使用贪心算法解决找零问题示例
本文实例讲述了JS使用贪心算法解决找零问题.分享给大家供大家参考,具体如下: 前面介绍了JS贪心算法解决背包问题,这里再来看看找零问题的解决方法. 在现实生活中,经常遇到找零问题,假设有数目不限的面值为20,10,5,1的硬币. 给出需要找零数,求出找零方案,要求:使用数目最少的硬币. 对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值.比如,需要找钱数为25时,找钱方式为20+5,而不是10+10+5. 贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很
随机推荐
- 浅谈angularJS的$watch失效问题的解决方案
- VBS类构造函数与Default关键字使用介绍
- Linux安装多个jdk版本进行切换
- IOS应用程序多语言本地化的两种解决方案
- 使用Xcode为iOS应用项目创建PCH文件的方法及应用示例
- editplus快捷键大全
- 初次接触php抽象工厂模式(Elgg)
- js实现n秒倒计时后才可以点击的效果
- shell脚本中case条件控制语句的一个bug分析
- jquery判断浏览器后退时候弹出消息的方法
- asp.net 通用分页显示辅助类(改进版)
- Jquery 在页面加载后执行的几种方式
- java计算时间差的方法
- picChange 图片切换特效的函数代码
- 浅析国内某网络游戏的安全现况
- .net输出重写压缩页面文件的小例子
- PHP中几个常用的魔术常量
- PHP实现采集程序原理和简单示例代码
- phpMyAdmin 安装配置方法和问题解决
- Android编程经典代码集锦(复制,粘贴,浏览器调用,Toast显示,自定义Dialog等)