|
本帖最后由 艾幻翔 于 2018-11-21 19:12 编辑
献丑
- #!/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
复制代码 |
|