2

このアルゴリズムについて教えてください。

次のようなテキストファイルがあります。

input1
input2
etc...

すべての inputX には、次のような要素のサブセットがあります。

input1 -> {input1_1, input1_2, ...}
input2 -> {input2_1, input2_2, input_2_3, ...}
inputX -> {inputX_1, inputX_2, inputX_3, ...}

私は似たようなものを作成する必要があります:

input1_1
input2_1
--------

input1_2
input2_1
--------

input1_1
input2_2
--------

input1_2
input2_2
--------

input1_1
input2_3
--------

input1_2
input2_3
--------

いくつかのアルゴリズムを提案してもらえますか? 私が考えることができるのはwhile/forループだけですが、適切に設定する方法がわかりません。

どうもありがとう、ピエルパオロ

4

1 に答える 1

1

リストの数がわかっている場合は、ネストされたループを使用して実行できます。

for (int i = 0 ; i != input1.size() ; i++)
    for (int j = 0 ; j != input2.size() ; j++)
        for (int k = 0 ; k != input3.size() ; k++) {
            String[] data = new String[] {
                input1.get(i), input2.get(j), input3.get(k)
            };
            Process(data);
        }

リストの数がわからない場合は、再帰的な解決策が必要です。

void processCombinations(int[] pos, int n, ArrayList<ArrayList<String> > inputs, String[] soFar) {
    if (n == pos.length) {
        Process(soFar);
        return;
    }
    ArrayList<String> input = inputs.get(n);
    for (pos[n] = 0 ; pos[n] != input.size() ; pos[n]++) {
        soFar[n] = input.get(pos[n]);
        processCombinations(pos, n+1, input, soFar);
    }
}
于 2012-06-10T12:23:36.473 に答える