Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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/4/algorithm/11.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 打破字符串的动态规划_Java_Algorithm_Dynamic Programming - Fatal编程技术网

Java 打破字符串的动态规划

Java 打破字符串的动态规划,java,algorithm,dynamic-programming,Java,Algorithm,Dynamic Programming,目标是计算在用户给定的断点处断开字符串的成本。因此,让我们假设如下: 字符串的长度=10,因此长度数组=[1,2,3,4,5,6,7,8,9,10] 断点数组=[5,3,2,6,1]。现在,我们不必更改用户给出的中断顺序 我能够找出这个问题的树结构 因此,在给定的断点处中断字符串的总成本=10+5+5+3+2=25 但是,我无法提出实现部分。以下是我的做法: 我从断点=5开始,将长度数组划分为 leftLength=[1,2,3,4,5] 及 rightLength=[6,7,8,9,10]

目标是计算在用户给定的断点处断开字符串的成本。因此,让我们假设如下: 字符串的长度=10,因此长度数组=[1,2,3,4,5,6,7,8,9,10] 断点数组=[5,3,2,6,1]。现在,我们不必更改用户给出的中断顺序

我能够找出这个问题的树结构

因此,在给定的断点处中断字符串的总成本=10+5+5+3+2=25 但是,我无法提出实现部分。以下是我的做法:

我从断点=5开始,将长度数组划分为

leftLength=[1,2,3,4,5]

rightLength=[6,7,8,9,10]

在断点=3处,我检查它是否应该位于leftLength数组下,所以我再次将leftLength分成两部分

leftLength1=[1,2,3]

rightLength1=[4,5]

在断点=2时,位于leftLength1下,因此再次分成两部分

leftLength2=[1,2]和

右长2=[3]


现在,当断点=6时,我被卡住了,因为它位于上面的rightLength之下。有人能帮我吗?我怎样才能跟踪我所做的所有分区。如何返回到第一个rightLength数组来计算断点6的开销。我正在尝试实现这个Java

对不起,这是Lua,但DP算法已经足够清晰了

——输入常量
局部L=0
局部R=10
本地断点={5,3,2,6,1}
--填充数组
本地近距离光={}
局部最近左={}
对于k=L,R-do
近光[k]=R
最左[k]=L
结束
--计算成本
当地成本=0
对于u,IPAIR中的断点(断点)do
局部左=最左[断点]
本地右侧=近右侧[断点]
成本=成本+(右-左)
对于k=left+1,断点-1do
NearestRight[k]=断点
结束
对于k=断点+1,右-1 do
最近左[k]=断点
结束
结束
印刷品(成本)——产出25

时间复杂度是
O(cost)

我只是在用Java实现之前编写伪代码,当断点是随机的时,我不会再进一步了。如果你愿意,我可以分享,你就不能建立一个结果数组的树,以及每个非叶节点的成本吗?然后应该不难找到包含当前包含元素6的数组的节点。我甚至不知道您的成本函数和优化目标是什么-您能详细说明一下吗?我还没有达到优化部分,这是计算数组中所有断点的总开销的第一步,这些断点的顺序与给定的顺序相同。在我实现这一点之后,我将对用户给定的所有断点组合运行计算,并找出最便宜的组合以及成本如果您只想计算整个过程的成本,只需使用递归并在每个步骤返回成本。如果要返回生成最佳解决方案的配置,可以将其包含在返回值中。