当前位置:首页>编程日记>正文

队列——PowerShell版

继续读啊哈磊《啊哈!算法》感悟系列——队列

地铁售票处排队,先来的人先到队首先买完先走,后来的人排在队尾等候后买完后走。

想买票,必须排在队尾;买完票,只能从队首离开。

这种先进先出(First In First Out,FIFO),后进后出的线性队伍,就是我们说的——队列。

在现实中,队列里包含的是人,在计算机的队列里,包含的就是数据啦~所以,队列是一种——数据结构。

队列中的三要素为:队伍,队首,队尾。

如果用我们比较熟悉的数组来表示队列的话,队伍就是数组本身,队首和队尾就是数组中相应索引位的数值元素。

这里用《潜伏》中的一个情节来举一个应用队列的例子:

队列——PowerShell版 配图01

军统局给余则成一段数字,并告诉他只要按照指定的规则就可以将这段数字还原为情报密码。

有一天,余则成从电台接到了这段数字:196811234567

情报转译规则如下:将第一个数字移到最后,抠去第二个数字,将第三个数字移到最后,扣去第四个数字……按照这个规则下去,直到这段数字最后只剩下一个数字为止,将之前扣去的数字和最后剩下的数字按顺序连接起来,就是情报密码。

拿1931这四个数字举例,“[ ]”中代表扣去的数字:

第一次:[9]311

第二次:[1]13

第三次:[3]1

第四次:[1]

将“[ ]”中的数字按照你看到的从上到下的顺序连接起来,就是情报密码:9131。

这个规则就好比是排队买票(把情报中的数字看成是人):

队列——PowerShell版 配图02

第一个人不买票,回到队尾,让第二个人先买;第三个人不买票,回到队尾,让第四个人先买……不用担心,最后所有人都会买到票……

当然!现实生活中没有这么谦让的。我只是想要举个例子来说明——这个情报转译的规则其实就是在对一个队列进行着操作!

现在我们来把这个拆解情报的过程通过一段程序来搞定:

$qingBao = Read-Host "Please enter the information"
$infoArray = New-Object System.Collections.ArrayList
$infoArray.Add(0)
for($i=0;$i -le $qingBao.length-1;$i++)
{$infoArray.Add($qingBao[$i])
}
function Translate($infoArray)
{$head = 1$tail = $infoArray.count$transArray = New-Object System.Collections.ArrayListwhile($head -le $tail){$infoArray.Add($infoArray[$head])$head++$transArray.Add($infoArray[$head])$tail++$head++}PrintTranslation $transArray
}
function PrintTranslation($transArray)
{Write-Host "The translation is: " -ForegroundColor blueWrite-Host $transArray -ForegroundColor green    
}
Translate $infoArray

http://www.coolblog.cn/news/6d54a959e3c54bd0.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • 2019-9
  • jquery 使用小技巧
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • 【设计模式】 模式PK:策略模式VS状态模式
  • JS实现-页面数据无限加载
  • CSS小技巧——CSS滚动条美化
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • python3 错误 Max retries exceeded with url 解决方法
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式