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
python 给定数组任意组合等于一个定值的所有解的更多相关文章
- implode() 数组元素组合函数
定义和用法 implode() 函数把数组元素组合为一个字符串. 语法:implode(separator,array); 说明 虽然 separator 参数是可选的.但是为了向后兼容,推荐您使用使 ...
- 一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置
package com.java.tencent; import java.lang.reflect.Array; import java.util.Arrays; import java.util. ...
- 求从n个数组任意选取一个元素的所有组合
最近做项目碰到这个问题,如题从n个数组任意选取一个元素的所有组合.比如已知数组是[1, 3]; [2, 4]; [5]; 最后组合结果是[1, 2, 5]; [1, 4, 5]; [3, 2, 5] ...
- 给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合
给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合 ruby代码: def all_possible_arr arr, length = 5 ret = [] leng ...
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...
- LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)
题目链接:https://leetcode.com/problems/combination-sum-ii/?tab=Description 给定数组,数组中的元素均为正数,target也是正数. ...
- 用C#写一个函数,在一个数组中找出随意几个值相加等于一个值 与迭代器对比
算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} 要找出那些数相加等 ...
- 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X
题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的 ...
- Python创建二维数组(关于list的一个小坑)
0.目录 1.遇到的问题 2.创建二维数组的办法 3.1 直接创建法 3.2 列表生成式法 3.3 使用模块numpy创建 1.遇到的问题 今天写Python代码的时候遇到了一个大坑,差点就耽误我交作 ...
随机推荐
- java标志性接口
标识接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情.使用标记接口的唯一目的是使得可以用instanceof进行类型查询,例如:if(obj inst ...
- Alisha’s Party (HDU5437)优先队列+模拟
Alisha 举办聚会,会在一定朋友到达时打开门,并允许相应数量的朋友进入,带的礼物价值大的先进,最后一个人到达之后放外面的所有人进来.用优先队列模拟即可.需要定义朋友结构体,存储每个人的到达顺序以及 ...
- 一个简单的定向python爬虫爬取指定页面的jpg图片
import requests as r import re resul=r.get("http://www.imooc.com/course/list") urlinfo=re. ...
- Python之进度条及π的计算
Python之进度条及π的计算 文本进度条 1. 简单的开始 这是利用print()函数来实现简单的非刷新文本进度条.它的基本思想是按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次 ...
- C++函数装饰器
今天在网上看到一个python实现的函数装饰器,尝试用C++11实现了一下,最后很粗糙的完成了,代码如下. 函数装饰器:接受一个函数.将此函数进行一些装饰,成为另一个函数.新生产的函数具有原函数的功能 ...
- node中间件概念
中间件就是请求req和响应res之间的一个应用,请求浏览器向服务器发送一个请求后,服务器直接通过request定位属性的方式得到通过request携带过去的数据,就是用户输入的数据和浏览器本身的数据信 ...
- 像使用数据库一样使用xml
目录 xml简介 语言结构 tinyxml 下载tinyxml 应用实例 tinyxml的封装 封装源码 实际应用 xml简介 XML 没什么特别的.它仅仅是纯文本而已.有能力处理纯文本的软件都可以处 ...
- Linux文件同步
简介 文件实时同步对于运维是个很常见的需求. 如集群的机器,需要上传个文件,之前的步骤是每台服务器分别上传. 做文件同步以后,只上传一台,其他机器自动同步. 目前实现实时同步的主流方案有 rsync+ ...
- 剑指offer 11. 位运算 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数 private stat ...
- centos7系统优化-转载
禁用SELINUX # grep -i ^selinux /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 注释掉上面2行,并增加 ...