CodeACM
HOT 100 · 回溯 · LC 39

组合总和:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

输入格式

第一行输入 n 和 target,第二行输入 n 个互不相同的正整数。

输出格式

第一行输出组合数 m。每个组合内部升序排列;所有组合按字典序输出,每行先输出长度再输出元素。

数据范围

  • 1 ≤ n ≤ 30
  • 2 ≤ candidates[i] ≤ 40
  • 1 ≤ target ≤ 40

公开样例

样例 1

输入

4 7
2 3 6 7

输出

2
3 2 2 3
1 7

2+2+3 和 7 均等于目标值。

样例 2

输入

3 5
2 3 5

输出

2
2 2 3
1 5

候选数字可以重复选择。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。