首次使用Queue(PHP)
首先
来自 PaizaA 等级升级问题集
夺旗游戏的结局 (与 Paiza 等级 B 相当)
在解决这个问题时,我学习了Queue,为了自己整理一下。
〇队列和堆栈
队列
先进先出(FIFO:先入先出)的数据结构方式
队列适用于输入数据必须按照其顺序进行处理的情况下。
堆栈(Stack)
先进后出(LIFO:Last in First Out)的数据结构方式
将添加数据称为“推”(push),将取出数据称为“弹出”(pop)。
当提到队列(Queue)和栈(Stack)时,会感到很难,但其实它们只是在数组操作中以不同的顺序取出元素,是很容易实现的。
说起来,在我学习基本信息时,曾经学过这个(数据存储部分)。
请查阅《北见式插图IT学堂 基本信息技术者 平成31年/01年 p556.557》。
关于在PHP中实现队列的问题
可以使用array_push()和array_shift()来实现。
将一个或多个元素添加到数组的末尾
・array_shift()方法,在数组的开头取出一个元素。
取出后,数组内的元素会向前移动。对于数字索引的数组,键将从0开始重新分配,但不会影响字符串键。
图像

Paiza问题集 简略解释(个人使用)

针对这个问题,大致的流程如下:
1. 获取初始位置并存入队列(array_push)
2. 从队列中取出第一个数据(array_shift),判断该位置的上下左右是否可以移动
→如果可以移动,则获取移动后的位置并存入队列
3. 不断重复步骤2,直到队列中没有数据为止。
省略了将移动的部分替换为 “*” 等处理,但大致的处理流程应该是这样(大概)。
请参考。
【Java】简单了解队列和栈!轻松管理数据!
PHP中的Stack和Queue
array_push
array_shift