นี่คือโซลูชัน JavaScript สำหรับหนึ่งในอัลกอริทึมการเขียนโปรแกรมแบบไดนามิกที่มีชื่อเสียงของ Algo Kadane
วิดีโอ YouTube นี้โดย Ben Wright อาจเป็นประโยชน์ในการทำความเข้าใจอัลกอริทึม Kadane สำหรับ subarray สูงสุดในลำดับ 1-D
บรรทัดแรกของอินพุตมีจำนวนจำนวนเต็ม T. T ติดตาม กรณีทดสอบแต่ละกรณีเริ่มต้นด้วยจำนวนเต็ม N. ในบรรทัดถัดไปจำนวนเต็ม n ติดตามเป็นตัวแทนขององค์ประกอบของอาร์เรย์ A.
1≤t≤10
1≤n≤105
−104≤ai≤104
subarray และลำดับที่คุณพิจารณาควรมีองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบ
สองพื้นที่แยกจากกันจำนวนเต็มแสดงถึง subarray ที่ต่อเนื่องกันและไม่ต่อเนื่องสูงสุด ควรเลือกจำนวนเต็มอย่างน้อยหนึ่งครั้งและใส่ลงใน subarrays (อาจจำเป็นต้องใช้ในกรณีที่องค์ประกอบทั้งหมดเป็นลบ)
2
4
1 2 3 4
6
2 -1 2 3 4 -5
10 10
10 11
ในกรณีแรก: ผลรวมสูงสุดสำหรับองค์ประกอบที่ต่อเนื่องกันและไม่ต่อเนื่องคือผลรวมขององค์ประกอบทั้งหมด (เนื่องจากเป็นบวกทั้งหมด)
ในกรณีที่สอง: [2 -1 2 3 4] -> นี่เป็นรูปแบบย่อยที่ต่อเนื่องกันด้วยผลรวมสูงสุด สำหรับผลรวมสูงสุดของกลุ่มองค์ประกอบที่ไม่จำเป็นต้องพูดถึงเพียงเพิ่มองค์ประกอบเชิงบวกทั้งหมด