-3

このように動作する多くのシンボル ゲームがあるので、これはおなじみのはずです。

事実:

  1. 同じ長さ 4 の 2 つの配列があります (A[4] と B[4])。

  2. 1 から 6 までのランダムな整数を入力します。

  3. 並べ替えはできません (同じままにしておく必要があります)。

問題:

それらを比較する必要があり、その後3つの値が必要です。最初に、同じ場所にある同じ要素の数を数える必要があります。私はこのようにそれを行い、それは働いています:

int first = 0;
int k = 0;
for (int j=1; j<=4; j++)
{
k++;
if (A[k] == B[j])
   {
    first++;            
   }
}

2 つ目は、同じ場所にあるが同じではない要素の数を数える必要があります。3 つ目は、まったく同じではない要素の数を数える必要があります。

4-(first+second)SECONDまたはTHIRD のいずれかの数を数えるソリューションが必要4-(first+second)です。

4

2 に答える 2

1

使用する必要があるロジックは次のとおりです。最初の配列をループします。各要素について、2 番目の配列の対応する要素が同じかどうかを確認します。同じ場合は、firstカウンターをインクリメントします。それらが同じでない場合は、2 番目の配列に最初の配列の対応する要素が含まれているかどうかを確認します。もしそうなら、それは間違いなく同じ位置にありません(同じ位置をチェックしただけです)-カウントをsecond増やします。それ以外の場合は、thirdカウントを増やします。コードは次のようになります。

int[] A = {...};
int[] B = {...};

List<Integer> lstB = new ArrayList<Integer>(B.length);
for (int index = 0; index < B.length; index++) {
    lstB.add(B[index]);
}

int first = 0, second = 0, third = 0;

for(int i=0; i<4; i++) {
    if(A[i] == B[i]) {
        first++;
    }
    else if(lstB.contains(A[i]) {
        second++;
    }
    else {
        third++;
    }
}
于 2013-05-28T09:37:03.710 に答える