
游戏算法
文章平均质量分 86
ACM算法日常
这个作者很懒,什么都没留下…
展开
-
Knuth高效洗牌算法
今天在做一个游戏需求的时候碰到一个问题,问题很简单,给定75个球,编号1-75,需要保证初始化的时候位置是随机的。显然,我们可以初始化一个数组A,把75个数放进去,然后做一个shuffle函数随机交换其中的元素,这样就是随机的。我准备这样做一个shuffle,但同时也想看看golang里面是否有这样的接口直接得到结果,看了下还真有,这个函数是rand.Perm(n),这个函数会返回一个数组,比如我传入75,会返回一个0-74的随机数组。arr := rand.Perm(75)好奇心驱使我一探究竟,原创 2021-02-24 08:30:56 · 1486 阅读 · 0 评论 -
算法合集 | 神奇的笛卡尔树 - HDU 1506
原文地址:https://cs.v8cloud.cn/article.html?blog_id=225 笛卡尔树是一个很有意思的树形结构,因为它同时满足两个性质,从key(key就是索引位置,如下图中9的key为1,3的key为2......)来看,满足二叉搜索树的特性,从value来看,满足堆的性质。 重点参考下图,图片来自维基百科,还算是能够比较形象的...原创 2018-09-12 14:36:55 · 10167 阅读 · 3 评论 -
涂色游戏Flood-it!(IDA*算法) - HDU 4127
做题之前,可以先到下面这个网站玩一会游戏:https://unixpapa.com/floodit/?sz=14&nc=6 游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最多的是A*算法以及很多优化的A*算法,对于只有4个方向的寻路算法,之前在网上见到有A*的位运算优化,性能非常高,1ms能处理上百个格子的地图寻路!很多MMORPG网络游戏都会应用这些算法,如...原创 2018-09-19 15:40:39 · 4743 阅读 · 0 评论 -
连连看游戏消除算法
今天在收到一道的面试题,觉得比较有意思,决定记录下来,整个题目与解答过程大概如下。连连看是一种很受大家欢迎的小游戏。下面四张图给出了最基本的消除规则:图 A 中出现在同一直线上无障碍的圈圈可以消除;图 B 中两个圈圈可以通过一次转弯消除;图 C 和图 D 中,两个圈圈可以通过两次转弯消除。已知以下接口,表示位置(x, y)上有无障碍物:int isBlocked(int x,...转载 2018-10-09 15:47:52 · 14688 阅读 · 4 评论 -
四两拨千斤,GCC编译器(同余模) - HDU 3123
对于两个数M和N,如果M%P == N%P,则可以说M和N对P同余。记作公式:M≡N(modP)同余这一属性看起来简单,然而却是数论中极为重要的概念。与之相关的公式和定理更是纷繁芜杂,如果不是数学背景的童鞋,恐怕很难深入去钻研所有的知识。我们这一篇作为一个简单的入门,用同余公式来解决一个阶乘问题。在做题之前,先来熟悉一个简单的公式:(M+N)%P=(M%P+N%P)%P(M+...原创 2018-11-06 08:36:16 · 4433 阅读 · 0 评论 -
寻找整数(容斥原理) - HDU 1796
看这题之前先复习一下容斥原理,不然肯定看不懂,呃,如果第一次接触容斥原理的题,可能弄懂了容斥原理你还是看不懂代码,是的,等会你就知道了。 容斥原理简介:在计数时,为了使重叠部分不被重复计算,人们研究出一种新的计数方法:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无...原创 2018-11-20 15:14:54 · 4153 阅读 · 0 评论 -
独角兽与数列(置换群循环)- HDU 4985
群论是法国数学家伽罗瓦(Galois)的发明。伽罗瓦是一个极具传奇性的人物,年仅21岁就英年早逝于一场近乎自杀的决斗中。他用该理论,具体来说是伽罗瓦群,解决了五次方程问题。在此之前柯西(Augustin-Louis Cauchy),阿贝尔(Niels Henrik Abel)等人也对群论作出了贡献。 群是 集合G+运算符·,它结合任何两个元素a和b而形成另一个元素,记为a·b。符号"·"是...原创 2018-12-01 18:02:58 · 5515 阅读 · 1 评论