首页 > 试题广场 >

加起来和为目标值的组合(三)

[编程题]加起来和为目标值的组合(三)
  • 热度指数:1799 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
找出所有相加之和是 n 的 k 个数的组合。组合中只含有 1~9的正整数,且保证每种组合中不含有相同的数字。
保证一定有解。结果按字典序升序输出。


示例1

输入

3,7

输出

[[1,2,4]]
示例2

输入

2,3

输出

[[1,2]]
示例3

输入

2,5

输出

[[1,4],[2,3]]
主要实现还是回溯迭代方法。主要考虑回溯点的位置,确定界点

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param k int整型 
 * @param n int整型 
 * @return int整型二维数组
 */
function combination( k ,  n ) {
    // write code here
    dfcData(1, k, n, [])
    return resultArr
//     console.log(JSON.stringify(resultArr))
}
var resultArr = []
function dfcData(i, k, n, arr) {
   if(k < 0 || n < 0) {
       return;
   }
    if(n === 0 && k ===0) {
        const arrtemp = [...arr]
        resultArr.push(arrtemp)
        return;
    }
    for(let a = i; a <= 9; a++) {
        arr.push(a)
        dfcData(a+1, k-1, n-a, arr)
        arr.pop()
    }
}
module.exports = {
    combination : combination
};

发表于 2022-04-08 16:01:54 回复(0)

问题信息

难度:
1条回答 1925浏览

热门推荐

通过挑战的用户

查看代码