Implementing 2D Array Algorithms
แนะนำใหม่| English | ความหมาย |
|---|---|
| nested-loop/ˈnestɪd luːp/ | ลูปซ้อนกัน |
| main diagonal/meɪn daɪˈæɡənl/ | เส้นทแยงมุมหลัก |
| indexed/ˈɪndekst/ | มีดรรชนี |
กริดอัลกอริทึม
- อัลกอริทึม 2-D ผสมผสานรูปแบบ array เข้ากับการ遍历แบบ nested-loop
- Sum / count / max ทั้งกริด: รวมผลภายในลูปภายใน
- Search กริด: คืนค่า
[row][col]ที่พบ (หรือสัญญาณ "not found") - Logic accumulator/max เดิม, ตอนนี้ทำกับ
rows × columnsเซลล์
ผลรวมแถวและคอลัมน์
- แถวเดียว: ยึด
r, ลูปcตามคอลัมน์, รวมผลg[r][c] - คอลัมน์เดียว: ยึด
c, ลูปrตามแถว, รวมผลg[r][c] - การเลือกว่าจะยึดดัชนีไหนและลูปดัชนีไหนคือการตัดสินใจที่สำคัญ
- Row sum sweeping Across; column sum sweeping Down
เส้นทแยงมุม
- Main diagonal ของกริดสี่เหลี่ยมจัตุรัสคือเซลล์ที่มี row == column
- ลูปดัชนีหนึ่งตัว:
for (int i = 0; i < g.length; i++) { ... g[i][i] ... } g[0][0], g[1][1], g[2][2], …— ลูปเดียว, ทั้งสองดัชนีเท่ากัน- มีประโยชน์สำหรับกริดสี่เหลี่ยมจัตุรัส (ตรวจสอบ identity, เส้นทแยงมุมกระดาน)
การแก้ไขเซลล์
- เพื่อเปลี่ยนค่าเซลล์ ใช้ indexed nested loops และ assign
g[r][c] = ... - For-each version ไม่สามารถเขียนกลับไปยังกริดได้
- ระวังขอบเขตทั้งสอง — ความยาวที่ผิดจะอ่านหรือเขียนเซลล์ที่ผิด
- Trace
[r][c]อย่างละเอียด, โดยเฉพาะเมื่อจำนวนแถวและคอลัมน์ไม่เท่ากัน
ตัดสินใจว่าจะยึดดัชนีไหนและลูปดัชนีไหน — นั่นคือความแตกต่างระหว่าง row sum กับ column sum. Row sum ยึด r และลูป c (g[r][c] Across); column sum ยึด c และลูป r (g[r][c] Down). และการแก้ไขเซลล์ต้องใช้ indexed nested loops (g[r][c] = …); for-each form สามารถอ่านเท่านั้น
รวมผลคอลัมน์ 0 ของกริด:
int sum = 0;for (int r = 0; r < g.length; r++) { sum += g[r][0]; }- ยึดคอลัมน์
0, ลูปลงตามแถว — เป็น column sum
2-D อัลกอริทึมใช้รูปแบบ array กับ ลูปซ้อน: ผลรวม/นับ/สูงสุด/ค้นหา ทั้งตาราง, ผลรวมแถว (ตรึง r,วนลูป c), ผลรวมคอลัมน์ (ตรึง c,วนลูป r) หรือ เส้นทแยงมุม (g[i][i]) การแก้ไขเซลล์ต้องใช้ ลูปแบบมีดัชนี (g[r][c] = …); ระวังขอบเขตทั้ง g.length แถว และ g[0].length คอลัมน์
Summing column 0
g[0][0]=1, g[1][0]=4, g[2][0]=7: running sum 1, 5, 12
To sum ONE row r, you...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
A row sum fixes the row, loops the columns
To sum ONE column c, you...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
A column sum fixes the column, loops the rows
เส้นทแยงมุมหลักของตารางสี่เหลี่ยมคือเซลล์ที่มี...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
g[0][0], g[1][1], g[2][2] — ดัชนีตัวเดียว ทั้งสองเท่ากัน
รูปแบบ for-each สามารถแก้ไข (เขียนข้อมูล) เข้าในเซลล์กริดได้
Difficulty 1/5 · 100 coins + a small bonus on first completion today
for-each อ่านได้เท่านั้น; ให้ใช้ลูปแบบมีดัชนี (g[r][c] = ...) เพื่อเขียนข้อมูล
คอลัมน์ 0 ของ {{1,2},{4,5},{7,8}} มีค่าเป็น 1, 4, 7 ผลรวมของมันคือเท่าไหร่?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
1 + 4 + 7 = 12.
เรียงลำดับขั้นตอนเพื่อหาผลรวมของคอลัมน์ c
Difficulty 3/5 · 200 coins + a small bonus on first completion today
เริ่มต้น, วนลูปตามแถว, รวบรวมผล, ส่งกลับค่า