求只包含素数的数组里面所有元素所有可能的乘积

// 求只包含素数的数组里面所有元素所有可能的乘积
// 求只包含素数的数组里面所有元素所有可能的乘积,简单说就是假如一个数组【3, 5, 7, 11】,求只包含1,2,3,4个元素的互相乘,要求输出所有的组合情况。 lz是用backtracking输出所有的可能组合搞定




public List<Integer> allProducts (int[] nums){
  List<Integer> result = new ArrayList<>();
  dfs(result, 0, 1);
  return result;
}

private void dfs(List<Integer> result, int index, int tmp){
  // base case 
  if(index == nums.length){
    if(tmp != 1){
      result.add(tmp);
    }
    return;
  }
  
  // dfs
  
  int current = nums[index];
  // pick the current number
  dfs(result, index + 1, tmp * current);
  
  
  // not pick the current number
  dfs(result, index + 1, tmp);
}

not tested yet 

posted on 2018-08-11 04:30  猪猪&#128055;  阅读(310)  评论(0)    收藏  举报

导航