计算将数组的所有元素拆分为K个连续相等部分的方法数量

问题描述

问题说明 您将获得一个包含B整数的一维整数数组A。 计算将数组的所有元素分成3个连续部分的方式数量,以使每个部分中的元素总和相同。

示例输入:

输入1

 A = 5
 B = [1,2,3,3]

输出1:2

没有2种分区方法

  1. (1,2)+(3)+(0,3)
  2. (1,2)+(3,0)+(3)

输入2

A = 4
B = [0,1,-1,0]

输出2:1

只有一种方法可以进行分区-

  1. (0)+(-1,1)+(0)
def solve(A,B):
    total = sum(B)
    if total % 3 == 0:
        target = total // 3
    else:
        return 0
    ans = 0
    f = 0
    s = 0
    for i in range(A - 1):
        s += B[i]
        if s == 2 * target:
            ans += f
        if s == target:
            f += 1
    return ans

所以我的问题是上面的代码能够解决3个连续的部分,但是如果我想解决K的问题,其中K可以是1<=k<=A,其中{{1 }}是给定数组A的长度。

我尝试了滑动窗口方法,但是没有通过上述问题的所有测试用例。 k个零件有问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...