이 도전에서는 두 가지가 전달됩니다.
- 끈 길이
N
L
각각 포인트 값이 할당 된 문자열 목록 . 전달되지 않은 문자열은 포인트 값이 0입니다.
N
모든 부분 문자열 포인트의 합이 최대한 커지도록 길이 문자열을 구성해야 합니다.
예를 들면 다음과 같습니다.
5 [("ABC", 3), ("DEF", 4), ("CDG", 2)]
출력해야합니다
ABCDG
점 ( ABC
및 CDG
)이있는 두 개의 하위 문자열 에는 총 5 개의 점이 있으며 다른 가능한 구성으로는 5 개 이상의 점을 줄 수 없습니다.
하위 문자열은 문자열에서 여러 번 사용할 수 있으며 겹칠 수 있습니다. 점이 항상 양수이고 부분 문자열 길이는 1 ~ N
문자 길이 , 그리고 그 사이라고 가정 할 수 있습니다 N > 0
. 여러 구성이 최대 인 경우 그 중 하나를 인쇄하십시오.
귀하의 프로그램은 합리적인 시간 내에 실행되어야합니다 (각 예제마다 1 분 이하).
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
쉼표없는 튜플