python 給定數組任意組合等於一個定值的所有解


拋出問題:

  求給定數組任意組合等於一個定值的所有解 例如列表l = [1, 2, 3, 4, 5],求任意組合的結果為10的所有答案

問題分析:

  實際就是列表的所有排列組合,然后算出每個排列組合的值,記錄等於所求值的組合結果。

  代碼實現就是先生成和 l 等長的全0列表,0表示,列表該位置數不取,1表示列表該位置數取,就這樣一直遞歸,一直到全1

# -*- coding:utf-8  -*-
# 日期:2018/6/11 7:30
# Author:小鼠標
# 求給定數組任意組合等於一個定值的所有解
list = [1, 2, 3, 4, 5]
val = 10
# 生成等長的全0列表
x = [0 for i in range(0,len(list))]

# 遞歸方法 x 記錄列表取跟不取,i表示當前遞歸的位置,has表示當前所有取的值的和
def get_val(x,i,has):
    if i > len(x) - 1:
        return
    if has + list[i] == val:
        #符合條件記錄
        x[i] = 1
        print(x)
        x[i] = 0
    # 當前位置取 執行一次
    x[i] = 1
    get_val(x,i+1,has+list[i])
    # 當前位置不取 執行一次
    x[i] = 0
    get_val(x, i + 1, has)
get_val(x,0,0)

# ===========結果=========
# [1, 1, 1, 1, 0]  》》》[1,2,3,4] 1+2+3+4=10
# [1, 0, 0, 1, 1]  》》》[1,4,5] 1+4+5=10
# [0, 1, 1, 0, 1]  》》》[2,3,5] 2+3+5=10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM