python选举平局情况怎么计算?

选举情况中常有平局情况,现设计一个方法 number_ties(blocks, for_votes=0, against_votes=0)返回平局的情况个数。其中:

参数block是一个无序列表,里面的元素代表着票数,for_votes表示支持数,against_votes表示反对数。

注意:该方法需要用到递归

例子:
number_ties([1, 2, 3]) 返回2

因为 支持1+2 反对 3      是一种情况

        支持3    反对1+2是一种情况

所以有两种情况。返回2

 

用dfs

result = 0


def dfs(values, a, b, times):
    global result
    if times == len(values):
        if a == b:
            result += 1
    else:
        times += 1
        dfs(values, a+values[times-1], b, times)
        dfs(values, a, b+values[times-1], times)


array = [int(i) for i in input().split(" ")]
dfs(array, 0, 0, 0)
print(result)