ในการท้าทายนี้คุณจะได้รับสองสิ่ง:
- ความยาวสตริง
N
- รายการสตริง
L
แต่ละอันมีค่าจุดที่กำหนด สตริงใด ๆ ที่ไม่ได้ผ่านมีค่าจุดเป็น 0
คุณต้องสร้างสตริงที่มีความยาวN
เพื่อให้ผลรวมของคะแนนย่อยทั้งหมดมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้
ตัวอย่างเช่น:
5 [("ABC", 3), ("DEF", 4), ("CDG", 2)]
ควรส่งออก
ABCDG
เนื่องจากสตริงย่อยทั้งสองที่มีคะแนน ( ABC
และCDG
) มีทั้งหมด 5 คะแนนและไม่มีสิ่งก่อสร้างอื่นที่เป็นไปได้ที่จะให้ 5 คะแนนขึ้นไป
สตริงย่อยสามารถใช้ได้หลายครั้งในสตริงและสามารถทับซ้อนกันได้ คุณสามารถคิดว่าจุดที่จะเป็นบวกความยาวย่อยจะอยู่ระหว่าง 1 ถึงN
longs N > 0
ตัวอักษรและว่า หากสิ่งปลูกสร้างหลายรายการมีขนาดใหญ่สุดให้พิมพ์หนึ่งในนั้น
โปรแกรมของคุณต้องทำงานในเวลาที่เหมาะสม (ไม่เกินหนึ่งนาทีสำหรับตัวอย่างแต่ละตัวอย่าง):
1 [("A", 7), ("B", 4), ("C", 100)] => C
2 [("A", 2), ("B", 3), ("AB", 2)] => AB
2 [("A", 1), ("B", 2), ("CD", 3)] => BB
2 [("AD", 1), ("B", 2), ("ZB", 3)] => ZB
3 [("AB", 2), ("BC", 1), ("CA", 3)] => CAB
3 [("ABC", 4), ("DEF", 4), ("E", 1)] => DEF
4 [("A", 1), ("BAB", 2), ("ABCD", 3)] => AAAA or ABAB or BABA or ABCD
5 [("A", 1), ("BAB", 2), ("ABCD", 3)] => BABCD or BABAB
5 [("ABC", 3), ("DEF", 4), ("CDG", 2)] => ABCDG
5 [("AB", 10), ("BC", 2), ("CA", 2)] => ABCAB
6 [("AB", 10), ("BC", 2), ("CA", 2)] => ABABAB
8 [("AA", 3), ("BA", 5)] => BAAAAAAA
10 [("ABCDE", 19), ("ACEBD", 18), ("ABEDC", 17), ("BCEDA", 16), ("EBDAC", 15), ("BACD", 14), ("CADB", 13), ("ABDC", 12), ("CABD", 11), ("EBDC", 10), ("ACE", 9), ("CBA", 8), ("AEC", 7), ("BE", 6), ("AE", 5), ("DC", 4), ("BA", 3), ("A", 2), ("D", 1)]
=> ACEBDACEBD
นี่คือรหัสกอล์ฟเพื่อเตรียมคำตอบสั้น ๆ ในภาษาที่คุณชื่นชอบ!
DEF
tuple หายไปจุลภาค