1

{'1','2','3','4'} などのセットのカスタム セットを生成できる単純な Java プログラムが必要です。結果は次のようになります: {'1','2'},{'2','3'},{'3','4'},{'1','2','3'},{ '2','3','4'}.

powerset のコードを試しましたが、出力が望ましくありません。コードが次のようなものである場合、それはかなりの価値があります。

for(j=2;j<set.size()-1;j++)
{
for(i=0;i<set.size()-1;i++)
{
//a[i],a[i+1] when j=2
//a[i],a[i+1],a[i+2] when j=3
}
} 

.size() は ArrayList 用であり、 a[i] は単純な配列用であり、どのアプローチでも行うように両方を記述しました!! 前もって感謝します!!:)

4

2 に答える 2

1

このコードは、必要な値を出力する必要があります。

    final int[] values = {1, 2, 3, 4};
    for (int size = 2; size < values.length; size++) {
        for (int i = 0; i + size <= values.length; i++) {
            for (int j = 0; j <= size - 1; j++) {
                System.out.print(values[i + j]);
            }
            System.out.println();
        }
    }

例から、長さが 1 より大きく、合計セットより小さい値のセットを出力したいことがわかります。したがって、次の行はそれを行います。

for (int size = 2; size < values.length; size++) {

その後、サブセットの開始インデックスを計算し、IndexArrayOutOfBounds 例外が発生しないように監視します (以下の行を参照)。

for (int i = 0; i + size <= values.length; i++) {

そこから、i インデックスから始まり、サブセットの長さが size の値を出力するだけです。

for (int j = 0; j <= size - 1; j++)
于 2014-03-27T11:06:08.270 に答える
0

これは、目的の結果を生成しているサンプル コードです。

    int[] array = { 1, 2, 3, 4 };
    int size = 2;
    for (int j = 0; j < array.length; j++) {
        for (int i = 0; i <= array.length - size; i++) {
            int[] temp = Arrays.copyOfRange(array, i, i + size);
            for (int x : temp) {
                System.out.print(x + ",");
            }
            System.out.println();
        }
        size++;
        if (size == array.length) {
            break;
        }
    }

出力:

1,2,
2,3,
3,4,
1,2,3,
2,3,4,
于 2014-03-27T11:15:45.657 に答える