-2

整数配列のリストがあり、各配列にはいくつかの数値がソートされています。ここでは、すべての配列に基づいて、最も一般的に発生する整数のシーケンスの組み合わせを見つけたいと考えています。たとえば、配列のリストが次の場合

A1 - 1 2 3 5 7 8
A2 - 2 3 5 6 7
A3 - 3 5 7 9
A4 - 1 2 3 7 9
A5 - 3 5 7 10

ここ

{3,5,7} - {A1,A3,A5}
{2,3}   - {A1,A2,A4}

上記は、入力と目的の出力のセットです。Javaでこれを最も効率的に行うにはどうすればよいですか?

4

2 に答える 2

0

新しい二次元配列 (2 行) を作成します。最初の行には、他の配列にあるすべての値を書き込みます。たとえば、A1 と A2 = {1 2 3 5 6 7 8} です。次に、配列に移動して、検出された要素の合計を計算し、この合計を配列の対応する要素に入れます。その後、配列を分析するだけです。

于 2013-02-27T13:35:42.330 に答える
0

私はあなたの質問を正しく理解していなかったと思います。3 5 7 を入力して A1、A2、A3 を取得する必要がある場合は、リストを使用する必要があると思います。例えば:

ArrayList<Integer> test = new ArrayList<Integer>();
test.add(1);
test.add(2);
ArrayList<Integer> tesdt2 = new ArrayList<Integer>();
tesdt2.add(1);
tesdt2.add(2);
boolean a = test.containsAll(tesdt2); //true
test.add(3);

標準配列 (Integer []myArray = new Integer[n];) を使用する必要がある場合は、すべての配列に対応し、必要な要素を見つける関数を作成する必要があります。このようなもの:

boolean search(Integer []A1,Integer []array2){
int tmp = -1;
for(int i=0;i<A1.length;i++){
for(int j=0;j<array2.length;j++){
if(A1[j] == array2[i]){
tmp++;


}
            }
            if(tmp!=i){
                return false;
            }
        }
        return true;
    }
于 2013-02-28T10:16:42.053 に答える