| English | 意味 |
|---|---|
| nested-loop/ˈnestɪd luːp/ | ネストループ |
| main diagonal/meɪn daɪˈæɡənl/ | 対角成分 |
| indexed/ˈɪndekst/ | 添字付き |
グリッドアルゴリズム
- 2次元アルゴリズムは、配列のパターンと 重複ループ による走査を組み合わせます。
- グリッド全体の 合計 / カウント / 最大値: 内側ループ内で蓄積します。
- グリッドの 検索: 見つかった位置の
[row][col]を返す(または「未発見」信号)。 - 同じ蓄積器/最大値ロジックを、
rows × columnsセル全体に対して適用します。
行と列の合計
- 1行:
rを固定し、列に対してcをループしてg[r][c]を合計します。 - 1つの列:
cを固定し、行に対してrをループしてg[r][c]を合計します。 - どのインデックスを固定し、どのインデックスをループするかを選ぶことが重要な判断です。
- 行の合計は横方向にスウィープし、列の合計は縦方向にスウィープします。
対角線
- 正方形グリッドの メイン対角線 は、行 == 列 のセルです。
- インデックス1つでループ:
for (int i = 0; i < g.length; i++) { ... g[i][i] ... } g[0][0], g[1][1], g[2][2], …— 単一のループで、両方のインデックスが等しくなります。- 正方形グリッドに有用です(恒等チェック、ボードの対角線など)。
セルの変更
- セルを変更するには、インデックス付き 重複ループを使用し、
g[r][c] = ...に代入します。 - for-each バージョンはグリッドへの書き込みができません。
- 2つの境界を確認してください — 誤った長さを使うと、誤ったセルを読み書きします。
[r][c]を慎重にトレースしてください、特に行と列の数が異なる場合。
どのインデックスを固定し、どのインデックスをループするかを決定することが、行の和と列の和の違いです。 行の和は r を固定して c をループします (g[r][c] を横方向に)。 列の和は c を固定して r をループします (g[r][c] を縦方向に)。セルを修正するにはインデックス付きネストループ (g[r][c] = … ) が必要です; for-each 形式では読み取りのみ可能です。
グリッドの列0の合計計算:
int sum = 0;for (int r = 0; r < g.length; r++) { sum += g[r][0]; }- 列
0を固定し、行を下にループ — 列の合計です。
2次元アルゴリズムは、重複ループ 上で配列パターンを適用します:グリッド全体の 合計/カウント/最大値/検索、行 の合計(r 固定、c ループ)、列 の合計(c 固定、r ループ)、または 対角線 (g[i][i])。セルの変更には インデックス付き ループが必要です(g[r][c] = …);両方の境界を確認してください(g.length 行、g[0].length 列)。
列0の合計計算
g[0][0]=1, g[1][0]=4, g[2][0]=7: 累計 1, 5, 12。
1つの行rの合計を計算するには...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
行の合計は行を固定し、列をループします。
1つの列cの合計を計算するには...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
列の合計は列を固定し、行をループします。
正方形グリッドの対角線とは、...であるセルです。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
g[0][0], g[1][1], g[2][2] — インデックスが1つで、どちらも等しい値です。
for-each形式はグリッドセルを修正(書き込み)できます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
for-eachは読み取り専用です。書き込みにはインデックス付きループ(g[r][c] = ...)を使用してください。
{{1,2},{4,5},{7,8}} の0番目の列は 1, 4, 7 です。その和はいくつですか?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
1 + 4 + 7 = 12.
列 c の和を求める手順を並べ替えてください。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
初期化、行のループ、蓄積、返却。