บทนำ
[3, 2, 4, 1, 1, 5, 1, 2]
ลองสังเกตอาร์เรย์นี้:
แต่ละองค์ประกอบจะแสดงความยาวของสตริงย่อยซึ่งจะต้องสรุปรวม ลองดูที่องค์ประกอบแรกของอาร์เรย์ด้านบน:
[3, 2, 4, 1, 1, 5, 1, 2]
^
องค์ประกอบที่ดัชนีแรกคือ3ดังนั้นตอนนี้เรารับสตริงย่อยของความยาวสามด้วยดัชนีเดียวกันกับตำแหน่งเริ่มต้น:
[3, 2, 4]
เมื่อสรุปผลนี้ใน9ดังนั้นองค์ประกอบแรกของชุดย่อยรวม9
เป็น
เราทำสิ่งนี้สำหรับองค์ประกอบทั้งหมดในอาร์เรย์:
3 -> [3, 2, 4]
2 -> [2, 4]
4 -> [4, 1, 1, 5]
1 -> [1]
1 -> [1]
5 -> [5, 1, 2]
1 -> [1]
2 -> [2]
คุณจะเห็นว่าหมายเลข5เป็นบิตของคดีแปลก ๆ จำนวนนั้นเกินความยาวของอาร์เรย์:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
[5, 1, 2]
เราจะไม่สนใจทุกอย่างที่เกินอาร์เรย์ดังนั้นเราเพียงแค่ใช้
ขั้นตอนสุดท้ายคือการสรุปทุกอย่าง:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
และนั่นคืออาร์เรย์ที่จำเป็นต้องแสดงผล:
[9, 6, 11, 1, 1, 8, 1, 2]
งาน
ได้รับอาเรย์ไม่ว่างเปล่ากับขั้วบวก (ไม่ใช่ศูนย์) จำนวนเต็มส่งออกชุดย่อยรวม นี่คือรหัสกอล์ฟดังนั้นการส่งที่มีจำนวนไบต์น้อยที่สุดจะชนะ!
กรณีทดสอบ
[1, 2, 3, 4, 5] -> [1, 5, 12, 9, 5]
[3, 3, 3, 3, 3, 3, 3, 3] -> [9, 9, 9, 9, 9, 9, 6, 3]
[5, 1, 2, 4, 1] -> [13, 1, 6, 5, 1]
[1] -> [1]