问题标签 [top-down]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 如何实现一种算法以在 O (k) 时间内合并两个具有 n=2^k 个元素的堆?
但是,我什至不知道这个问题意味着什么。
这只需要最少 O (n) 的时间来合并两个排序的数组,我不知道如何在 O (k) 时间内合并。
这总共有三个与之相关的问题:
这个问题的目的是探索以自上而下的方式高效构建标准堆的可能性。
给出合并两个标准堆的算法的高级描述,每个标准堆都包含 n = 2^k 个元素。该算法应该在 O(k) 时间内运行。
使用第 1 部分中指定的子例程,给出构建 2^n 个元素的堆的递归或迭代算法。
写下第 2 部分中指定的算法的运行时间方程,求解。
dynamic-programming - ACODE - spoj:建议我的方法可能有什么问题
我从 spoj 尝试了这个问题 ACODE。如果你能建议我,我的方法可能有什么问题!问题链接:http ://www.spoj.com/problems/ACODE/
我的做法:
对 k=1 或 k=2 的每个索引值使用自上而下的 DP.Memoization。
search - 自上而下的树搜索和替换
我在编写树搜索和替换算法时遇到问题。输入树包含任意嵌套的数据项——例如,tree = (1 (2 3 (4 (5)) 6)),其中 1 是根,并且向下的每一级都嵌入在括号中。所以 1 在第 1 级;2、3、4、6 位于第 2 层(低于 1),5 位于第 3 层(低于 4)。整个树的结构使得任何列表的汽车始终是一个数据项,其后可以是其他数据项或子树。问题是在树中找到与输入项匹配的数据项(在我的特定情况下为#'equal),并用给定的新子树替换现有的旧项——例如,(交换子树旧项树...)。因此,树会随着每次替换而增长。但是,搜索必须在树中自上而下进行,仅交换找到的第一个此类旧项目,然后退出。
一些观察?:1)对于二叉树,搜索顺序(自上而下的访问)通常称为级别顺序,其他可能的搜索顺序是前序、中序和后序,但我的树不一定是二进制的。2)像广度优先搜索算法这样的东西可能会起作用,但是节点是通过树遍历选择的,而不是生成的。3) 标准的“替代”功能仅适用于序列,不适用于树。4)“subst”函数适用于树,但似乎以深度优先的方式遍历替换所有匹配项,并且没有 :count 关键字(如“substitute”)在第一次替换后停止。
任何帮助编码甚至构建一个好的方法都将不胜感激。(也很好奇为什么 common-lisp 没有更多的列表和向量的“树”函数。)
strategy-pattern - 方法处理引入“自下而上”和细化“自上而下”的数据
(这个问题是关于数据提炼的策略和高级方法,而不是编程,所以如果它是题外话......提前抱歉,但我找不到更好的 stackexchange 社区)
因此,我们处于一个(典型)场景中,新数据由大量用户引入(自下而上的贡献),并由版主/管理员/受信任的用户定期提炼、纠正、分类和丰富(自上而下提炼)。
这种情况在网站中很常见(stackexchangetags
就是一个很好的例子)
是否有“最佳策略”来最小化工作量并最大限度地提高数据质量?
这里有些疑问:
- 强制数据通过验证过程或让它们填充系统(接受一定程度的不正确/不一致)并在出现时修复/丰富最流行的数据。
- 自上而下用尽可能多的数据预填充系统,以预测自下而上的到达。
- 帮助自下而上的条目与其他数据保持一致(自动完成和用户的意思框)
java - 如何在 LibGdx 中为自上而下的游戏扩展背景?
在自上而下的游戏中扩展背景的正确方法是什么?我使用了 LibGdx 框架。自上而下游戏的任何想法或教程。我的背景是 PNG 格式和 720x1280 肖像的屏幕。我在扩展背景时遇到了问题。我希望相机跟随角色并且背景会扩展。我怎么能那样做?这是屏幕截图
https://i.stack.imgur.com/jl03R.png
这是我的代码
为了显示背景,我使用了这个
在渲染中
背景正在滚动,但相机不跟随玩家(猫)
GameScreen 的源代码 http://pastebin.com/Dxfx9f65
非常感谢和提前任何帮助或建议。:)
parsing - AntlrGrammar.g4::: 以下几组规则是相互左递归的[子查询]
在 Antlr4 中,据说支持直接左递归。我可以用下面给出的语法中的 [expr]-rule 来验证这一点。无论如何,ANTLR4 的语法分析为 [子查询] 规则抛出错误,该规则是该语法中的第二个直接递归规则:
再次,子查询规则是递归的。没有间接递归。
不同子查询代码的合法语法输入行将是:
等等
递归具有 TERMINALVARIANT 给出退出子句,因此递归是/可以是有限的。为什么我会收到此错误?如何重写语法以避免它?
c++ - 具有 k 个 1 位的最小 n 位整数 c,它是 g、h 位设置为 1 的两个 n 位整数之和(动态规划)
我正在尝试解决以下问题:
找到最小的 n 位整数 c,它有 k 个 1 位,并且是两个 n 位整数的和,其中 g、h 位设置为 1。 g, h, k <= n
首先,这里的n位整数意味着我们可以使用所有n
位,即最大值。这样一个整数的值为2^n - 1
。所描述的整数可能根本不存在。很明显,这种情况k > g + h
没有解决方案,g + h = k
答案就是2^k - 1
(第一位k
是 1 位,k - n
前面是零)。
至于程序应该做什么的一些例子:
在我看来,这是一个动态规划问题,我选择了以下方法:让dp[g][h][k][n][c]
是所描述的整数,并且c
是用于携带的可选位。我尝试根据最低位重建可能的总和。所以,dp[g][h][k][n + 1][0]
是最小的
同样,dp[g][h][k][n + 1][1]
是最小值
这个想法并不难,但我对这些事情并没有真正的经验,而且我的算法即使对于最简单的情况也不起作用。我选择了自上而下的方法。我很难考虑所有极端情况。我真的不知道我是否正确选择了递归基础等。我的算法甚至不适用于最基本的情况g = h = k = 1, n = 2
(答案是01 + 01 = 10
)。不应该有答案,g = h = k = 1, n = 1
但是算法给出了1
(这基本上是前一个示例输出1
而不是 的原因2
)。所以,这是我糟糕的代码(只有非常基本的 C++):
python - Dynamic programming Topdown approach - minimum cost in a matrix (in python)
I have to implement some functions in python to find the minimum cost in a matrix.We must go down or right and to an adjacent number so at each step we have only two possible choices.
i wrote the fisrt version (naive one) which works:
But when i want to optimize it using memoization i can't find the right answer. I tried different ways but i wasn't able to do it correctly. Here is what i wrote:
Here is an example :
The naive version gives me the right anwser which is 18 -> 2,1,4,1,1,3,3,2,1 But the second one gives me 12
Thanks in advance for any help :)
EDIT : I call the naive version like minimal_trajectorry_helper(matrix, 0, 0) and the optimized one like dptd_minimal_trajectorry_helper(matrix, m, n, track) where track is initialized by : track = [[-1]*5]*5
c++ - c ++播放器与SFML的碰撞
我和我的朋友正在开发一个自上而下的益智游戏。
我们已经实现了一个可以行走和碰撞墙壁的玩家类,但问题在于碰撞本身。
例如:
当玩家撞到墙壁右侧时,我们将x
轴上的速度设置为0,然后玩家停止。但在那之后,如果用户按下up键,播放器会向上移动一个像素,然后再次停止。
之后,如果你一直交替按右和上,玩家就会一个像素一个像素地穿过墙壁。
这是玩家的碰撞检测:
快速说明:该intersect(x, y, w, h)
函数是播放器类的一部分,如果您需要查看它,请告诉我们。
如果您回复我们的代码,或者将我们链接到我们可以找到解决方案的地方,我们将很高兴。
因此,感谢您的帮助,如果需要,请提出问题,Arad 和 Ron。