如何用python解决这个问题
将一个数拆成n个固定的数之和,某些数出现的次数有最大限制
4条回答 默认 最新
- 青旒 2023-03-11 10:51关注
接受一个数字 num 和一个数字列表 nums(表示可以使用的固定数字),以及一个字典 counts(该字典表示每个数字出现的最大次数).
def split_number(num, nums, counts, path=[]): if num == 0: yield path for n in nums: if counts[n] > 0 and num >= n: counts[n] -= 1 yield from split_number(num - n, nums, counts, path + [n]) counts[n] += 1 nums = [1, 2, 5, 10] counts = {1: 3, 2: 3, 5: 3, 10: 3} num = 15 for result in split_number(num, nums, counts): print(result)
该代码使用递归,每次从列表 nums 中选择一个数字,并将它从 num 中减去。如果 num 为 0,则返回当前的结果。否则,继续递归,直到找到合适的结果。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
- ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
- ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
- ¥15 如何在炒股软件中,爬到我想看的日k线
- ¥15 seatunnel 怎么配置Elasticsearch