嗨,我是堆叠溢出的新手。我需要帮助来解决java程序中的以下问题
我有一个2D数组,我需要找出可以从任何节点遍历的最大长度。如果它的值小于当前元素,我可以从一个元素遍历到连接元素(左/右/上/下)。我需要在2D整数数组中找到上述条件可能达到的最大路径 下面是5 * 5阵列
7 2 3 4 5
36 37 38 34 6
33 44 46 40 7
24 43 42 41 8
35 32 47 30 9
上述阵列中最长路径为46-44-43-42-41-30-9-8-7-6-5-4-3-2总共14个。
请帮我写这篇Java代码。谢谢提前
答案 0 :(得分:1)
将数据表示为graph,其中G=(V,E)
和V={ all squares}
,E = { (u,v) | u is adjacent to v and u.value < v.value)
请注意,上图是Directed Acyclic Graph(因为if(u,v)在E中,没有从v
到u
的路径,因为它需要一条路径v->v1->v2->...->u
,v.value > v1.value > v2.value > .... > u.value
,operator>
是v.value > u.value
,因此它意味着v.value < u.value
,我们知道(u,v)
- 因为E
位于{{1}}这是一个矛盾,这样的路径不可能存在。)
减少之后 - 你可以简单地解决longest path in a DAG,这是一个更简单的问题。