package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*Input: candidates = [2,3,6,7], target = 7,
A solution set is:
[
[2,2,2,2],
[2,3,3],
[3,5]
]
可以把这道题转化为背包问题,以以下的表格为例,行可以代表作将要装进背包内物品的重量,列表示背包一共可以装多少物品,从左往右,从上往下依次计算累加。
*/
/* 1 2 3 4 5 6 7
*
2 0 2 0 4(2,2) 0 6 0
3 0 2 3 4 5 6 7
6 0 2 3 4 5 6 7
7
*/
public class CombinationSum {
public static void main(String[] args) {
List<List<Integer>> combinationSum = combinationSum(new int[] { 2, 3, 6, 7 }, 8);
System.out.println(combinationSum);
}
public static List<List<Integer>> combinationSum(int[] candidates,int target) {
Arrays.sort(candidates);
int[][] result = new int[candidates.length][target + 1];
Map<Integer, List<List<Integer>>> resuMap = new
07-21
07-21
07-21
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交