经典递归-求一个数组中的所有组合值等于指定值的组合
2018-02-27 13:21
1956 查看
不可变数组实现案例
public class Test { static int[] flag = new int[100]; static int index = 0;// 记录当前 public static void numGroup(int[] arr, int start, int length, int sum) { if (sum == 0) { for (int j = 0; j < index; j++) { System.out.print(flag[j]+" "+index); } System.out.println(); } else { for (int i = start; i < length; i++) { flag[index++] = arr[i]; TestStockOriginalOccupationService.numGroup(arr, i + 1, length-1, sum - arr[i]); } } index--; } public static void main(String[] args) { int[] arr = { 1, 3, 2, 4, 5, 6, 7, 8, 9,10,44,55,66 }; Arrays.sort(arr); int sum = 7; } }
可变数组的实现方式
private static List<StockOriginalOcupationEntity> matchGlobleSooList = new ArrayList<>(); public void numGroup(List<StockOriginalOcupationEntity> dsoe, int start, int length, BigDecimal sum,List<StockOriginalOcupationEntity> matchSooList) { if(sum.compareTo(BigDecimal.ZERO) == 0){ matchGlobleSooList.addAll(matchSooList); }else{ for (int i = start; i < length; i++) { matchSooList.add(dsoe.get(i)); BigDecimal dsoeIncome = dsoe.get(i).getIncome()==null?new BigDecimal(0):dsoe.get(i).getIncome(); numGroup(dsoe, i + 1, length - 1, sum.subtract(dsoeIncome),matchSooList); } if(matchSooList.size()>0){ matchSooList.remove(matchSooList.size()-1); } } }
注:谁有更好的实现方式欢迎交流哦
相关文章推荐
- 设计一个算法找到数组中两个元素相加等于指定数的所有组合
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 一道Amazon经典的题目,经常会考到,给一个target数字以及一个数组,求所有的加起来为这个数字的组合
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- 笔试题:写一个有序整数数组两两之和等于某个数所有组合
- 有一个整数数组,然后有一个数m,要找到整数数组中,所有和等于m的组合,并输出。
- 求一个数组里面所有和等于m的组合
- java实现 数组中两个元素相加等于指定数的所有组合
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法
- Java 找到数组中两个元素相加等于指定数的所有组合
- 经典算法 | 求解数组中的4个数的和为指定数的所有组合
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 递归-列出一个list中的所有的组合
- 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
- 求从n个数组任意选取一个元素的所有组合
- 打印出一个字符串的所有组合的递归方式
- 从数组中取出n个元素的所有组合(递归实现)