Scala 创建括号平衡器的并行处理
我正在参加coursera scala并行编程课程。我有一个任务来解决顺序和并行的问题。我已经解出了序列函数。对于并行函数,我怀疑如何跨并行线程维护当前的parantise数据 这是我的顺序函数:Scala 创建括号平衡器的并行处理,scala,parallel-processing,Scala,Parallel Processing,我正在参加coursera scala并行编程课程。我有一个任务来解决顺序和并行的问题。我已经解出了序列函数。对于并行函数,我怀疑如何跨并行线程维护当前的parantise数据 这是我的顺序函数: def balance(chars: Array[Char]): Boolean = { def helper( arr: Array[Char], acc: Int): Boolean = { if (arr.isEmpty && acc ==0)
def balance(chars: Array[Char]): Boolean = {
def helper( arr: Array[Char], acc: Int): Boolean = {
if (arr.isEmpty && acc ==0)
true
else if (arr.isEmpty || arr.head == ')' && acc <=0)
false
else if (arr.head == '(')
helper( arr.tail, acc +1)
else if (arr.head == ')' )
helper( arr.tail, acc - 1)
else
helper(arr.tail, acc)
}
helper(chars, 0)
}
def余额(字符:数组[Char]):布尔={
def辅助程序(arr:Array[Char],acc:Int):布尔={
如果(arr.isEmpty&&acc==0)
真的
否则,如果(arr.isEmpty | | arr.head==')和&acc由于Coursera规则,我不会给出确切的解决方案,而是给出一些建议
正如我所记得的,本作业建议您在递归结果中使用两个值。通常,学生认为这是“(“and count of”)”的计数,但正确的解决方案是另一个。您应该在每个递归步骤中计算两个值:
当前步长的增量=countOf“(“-countOf”)”
当前步长的最小“深度”。即,如果尝试在当前块上从左向右平移,则增量的最小值。它可以低于增量
几个例子(假设这是一个中间步骤):
((()):delta=0,minDepth=0
)(“:delta=-2,minDepth=-3
然后,在完成典型的平行导线测量之后,您需要正确地减少这两个值。这一点您将很容易自己猜测
如果平衡,您将最终得到(0,0)
例如case”)(“将给您(0,-1)谢谢。我想我是用其他概念解决的,90%的测试用例都通过了。我不确定是否可以再次提交,但肯定会尝试这种方法。