Napat / maximum_triangle_path_sum

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Maximum triangle path sum

3
7 4
2 4 6
8 5 9 3

โจทย์: หากเราเริ่มต้นจากตำแหน่งบนสุดของสามเหลี่ยมตามด้านล่างนี้และเคลื่อนที่ไปที่ตัวเลขที่อยู่บนแถวด้านล่างและอยู่ติดกัน
เราจะสามารถหาผลรวมสูงสุดจากด้านบนไปยังด้านล่างของสามเหลี่ยมได้ โดยผลรวมสูงสุดนี้เท่ากับ 23 หน่วย

-> 3 + 7 + 4 + 9 = 23

ค้นหาผลรวมสูงสุดจากด้านบนไปยังด้านล่างของสามเหลี่ยมด้านล่างนี้

75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

จากปัญหาในข้อนี้ หากใช้วิธี bruteforce เพื่อทดสอบทุกเส้นทางเราจะต้องค้นหาเป็นจำนวน 16384 เส้นทาง

อย่างไรก็ตาม หากสามเหลี่ยมมีขนาดใหญ่มาก มีขนาดหลายร้อยแถวเช่น ไฟล์ hard.json
จำนวนเส้นทางทั้งหมดเท่ากับ 9,223,372,036,854,775,807 เส้นทาง ทำให้ไม่สามารถแก้ได้ด้วยการ bruteforce ได้
จำเป็นต้องใช้เทคนิค dynamic programming หรือ shortest path algorithm เพื่อแก้ปัญหานี้

About


Languages

Language:Go 100.0%