题目描述
给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则:
1.R中元素总和加起来等于M
2.R中的元素可以从N中重复选取
3.R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数) 输入描述 第一行输入是连续数组N,采用空格分隔第二行输入数字M 输出描述 输出的是组装办法数量,int类型备注 1≤M≤30 1 ≤ N.length ≤ 1000
示例1
输入 2 5输出
1
说明 只有1种组装办法,就是[2,2,1]
示例2
输入 2 3 5
输出 2说明 共两种组装办法,分别是[2,2,1],[2,3]
解题思路
使用(DFS)来解答,枚举所有可能的组合,对于每一次搜索,分为两种情况:
1.选取当前数值;
2.不选取当前数值。
当前总和超过了m,则终止搜索;当前总和小于等于m且差值小于nums中的最小值,则计数器加1;对于每一个数值,都需要尝试选取和不选取两种情况,进入递归搜索。