-1

皆さん、

配列の k サイズのサブセットのコードを試しました。配列サブセットを出力しますが、[1,2] や [2,1] のようなペアは表示されません。

以下は私のコードです:-

class KSizeSubSetArray {

    private static void getSubsets(List<Integer> superSet, int k, int idx, Set<Integer> current,List<Set<Integer>> solution) {

            if (current.size() == k) {
                solution.add(new HashSet<Integer>(current));
                return;
            }

            if (idx == superSet.size()) 
                return;

            Integer x = superSet.get(idx);
            current.add(x);


            getSubsets(superSet, k, idx+1, current, solution);

            current.remove(x);

            getSubsets(superSet, k, idx+1, current, solution);
        }

        public static List<Set<Integer>> getSubsets(List<Integer> superSet, int k) {
            List<Set<Integer>> res = new ArrayList<Set<Integer>>();
            getSubsets(superSet, k, 0, new HashSet<Integer>(), res);
            return res;
        }

        public static void main(String[] args) {

                List<Integer> superSet = new ArrayList<Integer>();
                superSet.add(1);
                superSet.add(2);
                superSet.add(3);
                superSet.add(4);
                System.out.println(getSubsets(superSet,2));

        }
}

上記のコードは出力を出力します:-

[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]

しかし、[1,2] と [2,1] のような両方のペアを印刷することを期待しています。

何か不足していますか?

4

2 に答える 2