2017-10-19 5 views
-2

私はこのコードを本から理解しようとしています。入れ子ループを使用して2次元配列を作成する

int[][] grade = { 
    { 1, 0, 1 }, 
    { 0, 1, 0 }, 
    { 1, 0, 1 } 
}; 
for (int i = 0; i < 3; i++) { 
    for (int j = 0; j < 3; j++) { 
    if (i == j) 
     System.out.print(grade[i][j] + grade[j][i] + " "); 
    else 
     System.out.print(grade[i][j] * grade[j][i] + " "); 
    } 
    System.out.println(" "); 
} 

私は2次元配列の論理が行と列であると理解しています。私はちょうどその答えがどのようになったのか分かりません。

2 0 1 
0 2 0 
1 0 2 
+0

は何ですかあなたはそれについて理解していないのですか?入力が0と1で、オペランドが+と*の場合、出力0,1,2しか得られないことは明らかです。 –

答えて

0

2次元配列をループします。 iがjに等しい場合、たとえば(0,0,1,2,2)の場合、等級[i] [j]に等級[j] [i]を追加します。 iとjは等しいので、それ自体に位置を追加します。

iがjと等しくない場合、それは等級[i] [j]に等級[j] [i]を掛けます。

これらは等しくないので、グリッド内の2つの異なる位置を乗算します。例:

グレード[3] [1]はグレード[1] [3]で乗算されます。

あなたは2に[3] [1]グレードを変更した場合は、すべてのコーナーが2

入力と出力のようになります。

1 0 2 
0 1 0 
1 0 1 

なり出力:

2 0 2 
0 2 0 
2 0 2 
-1

これは基本的に2次元配列をループして、列および行番号(iおよびj)は同じであることを見た場合、それ自体でそれを追加します。すなわち、対角に2倍の時間を有する。残りのエントリーについては、それ自体が増えます。

関連する問題