美文网首页
【数组】--N-Sum问题

【数组】--N-Sum问题

作者: Albert_Sun | 来源:发表于2017-07-19 23:57 被阅读205次
def EnumNumber(arr, x, i, residue):
    if i >= len(arr):
        return
    if arr[i] == residue:
        x[i] = 1
        print x
        x[i] = 0
        # return

    x[i] = 1
    EnumNumber(arr, x, i+1, residue-arr[i])
    x[i] = 0
    EnumNumber(arr, x, i+1, residue)


def FindNumber(arr, x, i, residue, target):
    if i >= len(arr):
        return
    if arr[i] == target:
        x[i] = 1
        print x
        x[i] = 0

    if (residue >= target) and (arr[i] <= target):
        x[i] = 1
        FindNumber(arr, x, i+1, residue-arr[i], target-arr[i])
        x[i] = 0

    if ((residue-arr[i]) >= target):
        x[i] = 0
        FindNumber(arr, x, i+1, residue-arr[i], target)


def FindNumberNeg(arr, x, i, neg, postive, target):
    if i >= len(arr):
        return
    if arr[i] == target:
        x[i] = 1
        print x
        x[i] = 0

    if arr[i] >= 0:
        if (postive >= target) and (arr[i] <= target):
            x[i] = 1
            FindNumberNeg(arr, x, i+1, neg, postive-arr[i], target-arr[i])
            x[i] = 0

        if ((postive-arr[i]) >= target):
            x[i] = 0
            FindNumberNeg(arr, x, i+1, neg, postive-arr[i], target)
    else:
        if (arr[i]+postive) >= target:
            x[i] = 1
            FindNumberNeg(arr, x, i+1, neg-arr[i], postive, target-arr[i])
            x[i] = 0
        # else:
        # if (neg <= target) and (postive >= target): 
        if postive >= target:
            x[i] = 0
            FindNumberNeg(arr, x, i+1, neg-arr[i], postive, target)


def nsum(arr, target):
    x = [0]*len(arr)
    # EnumNumber(arr, x, 0, target)
    # FindNumber(arr, x, 0, sum(arr), target)
    postive = neg = 0
    for i in arr:
        if i >= 0:
            postive += i
        else:
            neg += i
    print postive, neg
    FindNumberNeg(arr, x, 0, neg, postive, target)

if __name__ == "__main__":
# arr = [1, 2, 3, 4, 5, 0]
    arr = [-3, -5, -2, 4, 2, 1, 3]
    nsum(arr, 5)

相关文章

  • 【数组】--N-Sum问题

  • Leetcode N-sum

  • [数组问题]

    34. 在排序数组中查找元素的第一个和最后一个位置 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标...

  • [数组问题]

    66. 加一 题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首...

  • JS问题记录

    一、数组问题 1、数组添加元素 2、数组删除指定下标元素 3、数组排序

  • java笔记5

    数组的定义 数组的内存分配及特点 数组操作常见问题 数据常见操作 数组中的数组 @Test public void...

  • 类数组问题

    类数组长什么样子? 类数组怎么转化为数组呢? 1.使用 Array.prototype.slice.call(【类...

  • 指针数组问题

    指针数组问题 这里的ar其实和&ar[0]是等价的,是一个地址常量,可以使用ar+1标志下一个元素,但不能使用ar++

  • 数组拷贝问题

    今天做一个购物车时用到了mutableCopy,发现发mutableCopy虽然对外层数组进行了拷贝,但是内层对象...

  • 数组基础问题

    1.Sum of the array numbers 2.Minimum element of the array...

网友评论

      本文标题:【数组】--N-Sum问题

      本文链接:https://www.haomeiwen.com/subject/vugrkxtx.html