Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android游戏开发(编程/算法)问题_Java_Android_Algorithm - Fatal编程技术网

Java Android游戏开发(编程/算法)问题

Java Android游戏开发(编程/算法)问题,java,android,algorithm,Java,Android,Algorithm,我有一堆向上移动的对象(气球),它们击中了屋顶(即object.yPos返回连接到气球的所有气球的ArrayList) balloon.getX()->返回引出序号的X位置 balloon.getY()->返回balloon的Y位置 我能想到的一种检测“悬挂在空中”气球的方法是使用DFS或BFS的“图形遍历”,其中原点是被击中(并移除)的球的所有相邻球,目的地是…如果任何相邻球(或“相邻球”或“相邻球”等)具有getY()这里有一个简单的算法,它可能会根据您的目的正常运行:只需从锚点开始,并将

我有一堆向上移动的对象(气球),它们击中了屋顶(即object.yPos返回连接到气球的所有气球的ArrayList)

balloon.getX()->返回引出序号的X位置

balloon.getY()->返回balloon的Y位置


我能想到的一种检测“悬挂在空中”气球的方法是使用DFS或BFS的“图形遍历”,其中原点是被击中(并移除)的球的所有相邻球,目的地是…如果任何相邻球(或“相邻球”或“相邻球”等)具有getY()这里有一个简单的算法,它可能会根据您的目的正常运行:只需从锚点开始,并将从锚点到达的每个节点标记为可到达。完成后,弹出所有未标记为可到达的引出序号。这样做的成本将与引出序号的数量加上连接数成线性关系,我认为这接近optim解决这个问题(因为一个镜头可能会弹出图表中的每个气球,所以你至少需要做O(气球)工作)。

为什么你不直接告诉我们你正在制作一个克隆?这会让问题变得更短:)

如果要避免搜索,请执行某种引用计数方案:

对于每个气球,保存子(附加)气球的列表和一个整数,该整数计算父(锚定)气球的数量。当气球弹出时,检查所有的子气球,并减少它们的锚数。如果子气球在此之后没有父气球,那么也将其弹出(递归执行或将其添加到某个队列中…)

只要不可能存在循环依赖关系,这就应该有效。(我认为是这样的。但是,如果存在循环依赖,那么图搜索是唯一的解决方案)



顺便说一句,做一个验证性的搜索来找到连接的气球只有O(气球的数量)。我严重怀疑你的比赛有这么多的选票,这将成为一个真正的问题。毕竟,首先渲染气球应该具有相同的复杂性…

当气球找到锚时,让它告诉锚它正在锚定。 在锚上保留锚定气球的列表 在找到锚的引出序号上保留锚的列表 当锚离开时,告诉锚定的气球它离开了。 然后,您可以使用锚定列表来确定是否需要向上移动


假设可以堆叠两个以上的引出序号,也应该向下遍历,只向上移动最后一个引出序号,而不是单独移动每个引出序号

我相信循环依赖是可能的。考虑两个互相接触的气球,每个气球接触一个(独立的)独立锚定的气球。看起来是个不错的选择。有趣的是,这个解决方案是多么简单,我陷入了从“要删除的节点”而不是从锚点思考问题的困境。