ปัญหาที่ตั้งขึ้นมาในข้อนี้เป็นหนึ่งใน classical problem หรือว่าได้ว่าเป็นปัญหาที่เจอได้บ่อยครั้ง คือปัญหา maximum sum subsequence ปัญหา maximum sum subsequence มีหลายวิธีที่สามารถจะแก้ได้โดยใช้เวลาเพียง เท่านั้น เช่นเราอาจใช้ Kadane's algorithm หรือ deque มาแก้ก็ได้
อย่างไรก็ตาม เทคนิคเหล่านี้ยากเกินกว่าที่จะเหมาะสมกับโจทย์ในระดับ 10 เลยขออธิบายอัลกอริทึมที่ใช้เวลา เนื่องจากโจทย์กำหนดว่า ดังนั้น ซึ่งยังสามารถทำงานเสร็จได้ภายในหนึ่งวินาทีสำหรับภาษา C/C++ แน่นอน
อัลกอริทึมที่ใช้ก็คำ for-loop สองชั้น โดยไล่ตัวแปร จาก และสำหรับแต่ละ จะไล่ตัวแปร ตั้งแต่ เราจะเก็บตัวแปร ที่เก็บผลบวกของช่วง เมื่อต้องการเลื่อนจาก ไป เราจะเพิ่มค่า เป็น และเมื่อต้องการเปลี่ยนค่า เราจะตั้งค่า ใหม่ที่ ฉนั้นในแต่ละขั้นตอนจะได้ช่วง และผลบวกของแต่ละช่วง ซึ่งสามารถนำมาหาว่าผลบวกของช่วงใหนมีค่ามากที่สุดได้ ด้านล่างคือโค้ดของอัลกอริทึมหลักนี้
max_sum = 0 left_bound = -1 right_bound = -1 for i in range(0, n): S = 0 for j in range(i, n): S = S + a[j] if S > max_sum: max_sum = S left_bound = i right_bound = j print(max_sum, left_bound, right_bound)