设计以某种方式移动数组[][]中的结构的算法的问题

Posted

技术标签:

【中文标题】设计以某种方式移动数组[][]中的结构的算法的问题【英文标题】:Problem in designing an algorithm that moves structures in an array[][] in a certain way 【发布时间】:2022-01-18 00:45:48 【问题描述】:

我是一名初学者 C 程序员。 我一直未能找到可以解决以下问题的算法:

在一个二维数组“board[x][y]”上,其中包含 以下排列的元素:

地板白色),物品蓝色),背包green) 和 Player (orange),Player 可以移动并且可以通过直接“触摸”它们来移动项目,以一种它们移动的方式朝着同一个方向和 保持依附。 “接触”是由一个项目在其中一个上定义的 播放器的四个侧面。

Graphic 1 describing predicted movement

如果玩家有一个背包,背包本身 充当一种粘性附件,移动所有附加到该附件的项目 背包,包括其他背包。

Graphic 2 describing predicted movement

有没有一种算法可以成功地移动由规则形成的结果“结构”,只移动“附加”的项目?如果您能帮助我找到方法或引导我走上一条道路,我将非常乐意了解它。

提前谢谢你。

【问题讨论】:

建议:除Floor外的每个元素都是struct的同一类型,并有一个成员标识哪个类型。您可以通过形成链表将它们关联到组中。 拜托,算法。 如果一个附加的物品(不是背包)碰到另一个物品并且你试图移动怎么办? 【参考方案1】:

在列表中存储玩家以及附加物品和背包的位置。执行移动时,列表中的所有元素都会移动。移动后,考虑列表中的玩家和背包,并添加相邻的物品或背包尚不存在

[但请参阅我的第二条评论。]

【讨论】:

以上是关于设计以某种方式移动数组[][]中的结构的算法的问题的主要内容,如果未能解决你的问题,请参考以下文章

数据结构和算法分析

20172306 2018-2019 《程序设计与数据结构》第四周总结

数据结构与算法之深入解析“行星碰撞”的求解思路与算法示例

2. 第 2 章 抽象数据类型

数据结构与算法设计二——栈

三分钟看懂插入排序算法