博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 给定数组任意组合等于一个定值的所有解
阅读量:4618 次
发布时间:2019-06-09

本文共 840 字,大约阅读时间需要 2 分钟。

抛出问题:

  求给定数组任意组合等于一个定值的所有解 例如列表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

 

转载于:https://www.cnblogs.com/7749ha/p/9165401.html

你可能感兴趣的文章
Python之反向迭代
查看>>
STM32F4 输入输出(GPIO)模式理解
查看>>
转义符
查看>>
第一个移动端项目
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
通讯录从诺基亚手机同步至iphone
查看>>
subline text3利用正则搜索
查看>>
项目管理思考——职责
查看>>
主成分分析(PCA)原理详解
查看>>
短信验证接口网址
查看>>
Geohash距离估算
查看>>
Demon_背包系统(实现装备栏,背包栏,可以切换装备)
查看>>
记录:一次数据库被恶意修改配置文件的问题
查看>>
redis 持久化
查看>>
http协议详解
查看>>
解决Jupyter notebook[import tensorflow as tf]报错
查看>>
Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
查看>>
python网络画图——networkX
查看>>