python实现输入是一个整数集S和一个整数m,输出是和为m的所有S

该博客介绍了一个算法,用于找出给定整数集S的所有子集,这些子集的和等于指定整数m。首先,通过递归或迭代方式列出S的所有子集,然后遍历这些子集,计算它们的和,如果和等于m,则输出该子集。博客提供了Python代码实现,包括获取子集和检查子集和的功能。
摘要由CSDN通过智能技术生成

给定一个算法,其输入是一个整数集S和一个整数m,输出是和为m的所有S的子集,算法步骤如下:
(1)列出S的全部子集,求他们的和。
(2)逐个查看步骤(1)列出的子集,把每个和等于m的子集输出。

# @Time : 2020/2/21
# @File : firstwork.py
# @Author : Snipe
# @Contact : visonarydo@163.com
# @Software : Window10 + Python3.6 + PyCharm

import numpy as np

# 将所有输入整数的子集列出
def getArraySubSet(originArray):
    result = [[]]
    for i in range(len(originArray)):
        for j in range(len(result)):
            result.append(result[j]+[originArray[i]]) #现有每个子集中添加新元素,作为新子集加入结果集中
    result.remove([])
    return result


# 获取输入
S = input("请输入一个整数集S,元素以空格分开:")
S = S.split()
S_len = len(S)
for s in range(0, S_len):
    S[s] = int(S[s])
m = int(input("请输入一个整数m:"))


subset = getArraySubSet(S)
subset_len = len(subset)

# 逐个查看各个子集,将各子集和同输入m比较,并输出题中所需
for i in range(0, subset_len):
    sum = 0
    for j in range(0, len(subset[i])):
        sum += subset[i][j]
        if sum == m:
            print(subset[i])

# print(subset)
# print(subset[2][1])
# print(len(subset[2]))
# print(len(subset))


# subset = np.array(subset)
# print(subset.shape)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值