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. 贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很
随机推荐
- Vmware12虚拟机安装教程 Vmware12虚拟机上安装Oracle
- jquery div提示框渐隐弹出与隐藏效果
- 详解vue中使用express+fetch获取本地json文件
- 轻松搞定iOS本地消息推送
- 配置支持SSI
- ThinkPHP路由详解
- 详解详解Python中writelines()方法的使用
- Java实现多线程断点下载实例代码(下载过程中可以暂停)
- Android自定义 WebView浏览器
- PHP连接Access数据库的方法小结
- ajax的get请求时缓存处理解决方法
- 又好气又好笑的幽默小句子
- PHP 服务器配置(使用Apache及IIS两种方法)
- 给Easyui-Datebox设置隐藏或者不可用的解决方法
- Struts2学习笔记(4)-通配符的使用
- 自制的文件上传JS控件可支持IE、chrome、firefox etc
- 关于Android bitmap你不知道的一些事
- RxJava 1升级到RxJava 2过程中踩过的一些“坑”
- mingw编译的windows命令行贪吃蛇示例
- Python3实现的画图及加载图片动画效果示例