发现
问答
发起
提问
文章
文章
更多
专家
话题
财富榜
商城
Toggle navigation
首页
(current)
问答
文章
话题
商城
搜索
登录
注册
23
请各位大神帮忙指点解决求值问题
如果a,b,c,d,e均为<=10的整数,sum=a+b+c+d+e,sum=17,怎么能利用pathon程序计算出满足sum=17的各种情况,即a,b,c,d,e都有哪些数值组合能满足,求各位大神指点指点用pathon怎么实现。
1 条评论
分类:
默认分类
请先
登录
后评论
最佳答案
2021-09-23 22:47
献丑
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by lightwave on 2017/9/6
# Copyright (c) 2017 lightwave. All rights reserved.
from itertools import product
def func(num_count, num_sun, start=0, end=10, is_repeat=False):
"""
如果a,b,c,d,e均为<=10的整数,sum=a+b+c+d+e,sum=17, 即满足sum=17的各种情况
求a,b,c,d,e都有哪些数值组合能满足
:param num_count: 数字个数
:param num_sun: 数字之和
:param start: 数字起始值
:param end: 数字结束值
:param is_repeat: 数字是否允许重复,False不允许重复, True允许重复
:return:
"""
number_list = product(range(start, end + 1), repeat=num_count)
number_list = filter(lambda x: sum(x) == num_sun, number_list)
if not is_repeat:
number_list = filter(lambda x: len(set(x)) == num_count, number_list)
return iter(number_list)
if __name__ == '__main__':
results1 = func(5, 17) # 不允许重复数字
results2 = func(5, 17, is_repeat=True) # 允许重复数字
print("results1", len(list(results1))) # 1440
print("results2", len(list(results2))) # 4935
复制代码
1 条评论
1
请先
登录
后评论
秋叶
采纳率 74% | 回答于 2021-09-23 22:47
默认排序
时间排序
其它 3 个回答
泡泡鱼
2021-09-23 22:47
a=b=c=d=e=range(0,11)
for i in a:
for j in b:
for k in c:
for l in d:
for m in e:
mylist=[i,j,k,l,m]
if (len(set(mylist))==5) and (sum(mylist)==17):
print(i,j,k,l,m)
复制代码
请先
登录
后评论
木子丶簫
2021-09-23 22:47
递归方式,优点:不用写那么多循环,在数的数量不止五个时候更方便,几十个数都行,缺点:看着烧脑,写着跟烧脑
def func(sum_,n,com = [],all_com=[]):
#sum_五个数的总和,n数的数量
for i in range(11):
c = com[:]
if i not in c: #控制5个数是否能相同,有该条件则五个数完全不同
c.append(i)
else:
continue
if sum(c) > sum_:
break
elif len(c) < n:
func(sum_,n,c,all_com)
if len(c) == n and sum(c)==sum_ and c not in all_com:
all_com.append(c)
return all_com
all_combine = func(17,5)
复制代码
请先
登录
后评论
凌辉
2021-09-23 22:47
num = 17
arr = []
for a in range(1, num+1):
for b in range(1, num+1):
for c in range(1, num+1):
for d in range(1, num+1):
for e in range(1, num+1):
temp = {a, b, c, d, e}
if len(temp) == 5 and sum(temp) == num:
temp = list(temp)
temp.sort()
if temp not in arr:
arr.append(temp)
print(arr)
复制代码
请先
登录
后评论
关注
5
关注
收藏
1
收藏,
584
浏览
樱桃小铺
提出于 2021-09-23 22:47
相似问题
×
发送私信
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: