<gouthampradhan>backtracking_CombinationSumII_1.java
private void combination(
      int i, int target, int[] candidates, List<Integer> row, List<List<Integer>> result) {
    if (target == 0) {
      result.add(new ArrayList<>(row));
    } else if (target > 0) {
      for (int j = i, l = candidates.length; j < l; j++) {
        if (j > i && candidates[j] == candidates[j - 1]) continue;
        row.add(candidates[j]);
        combination(j + 1, target - candidates[j], candidates, row, result);
        row.remove(row.size() - 1);
      }
    }
  }
private void sample_funcname ( int i , int target , int [ ] candidates , List < Integer > row , List < List < Integer >> result ) {
  if ( target == 0 ) {
    result . add ( new ArrayList < > ( row ) ) ;
  }
  else if ( target > 0 ) {
    for ( int j = i , l = candidates . length ;
    j < l ;
    j ++ ) {
      if ( j > i && candidates [ j ] == candidates [ j - 1 ] ) continue ;
      row . add ( candidates [ j ] ) ;
      combination ( j + 1 , target - candidates [ j ] , candidates , row , result ) ;
      row . remove ( row . size ( ) - 1 ) ;
    }
  }
}
