君梦如烟Brian 2022-09-28 11:26 采纳率: 75%
浏览 37
已结题

暴搜所有组合应该怎么剪枝? 求思路

题目简述

要求输出n个正整数,他们的和为s, 每个元素值的范围在[1,m]之内。求输出所有可能的组合结果。

输入: n = 2, m = 6, s = 10,下面简述为(n, m, s), 即(2,6,10)

输出:
(4,6)
(5,5)

注意:
(6,4)属于重复的结果

边界约束:
1 <= n <= 100
1 <= m <= 1e9
1 <= s <= 1e5

问题

我用dfs暴力搜索 + 剪枝,但是还是通过不过用例。
(100, 100, 10000)
(3, 1e5, 20)

  • 写回答

1条回答 默认 最新

  • 於黾 2022-09-28 13:49
    关注

    1.由于多少个元素不确定,肯定是要递归的,写死循环不可行
    2.不用剪枝,递归的时候传递初始值内层与外层相等即可,这样4只能和4,5,6去加,5只能和5,6,7加,6只能和6,7,8加,不能输入的更小
    3.暴力搜索容易超时,你应该判断如果不是最后一层递归,相加的结果已经大于给定的数,就结束本次循环,不要继续了(只影响当前的层,返回上一层之后继续外层循环)
    4.如果是最后一层,不要再循环了,直接用给定的数减去前n-1项的和就是最后一项,为防止最后一项小于倒数第2项,这个条件可以在前面3的时候就过滤掉,不要继续循环了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 修改了问题 9月28日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题