In dieser Herausforderung haben Sie zwei Dinge bestanden:
- Eine Stringlänge,
N
- Eine Liste von Zeichenfolgen mit
L
jeweils einem zugewiesenen Punktwert. Jede Zeichenfolge, die nicht übergeben wird, hat den Punktwert 0
Sie müssen eine Zeichenfolge mit einer N
solchen Länge erstellen, dass die Summe aller Teilzeichenfolgepunkte so groß wie möglich ist.
Beispielsweise:
5 [("ABC", 3), ("DEF", 4), ("CDG", 2)]
sollte ausgeben
ABCDG
Weil die beiden Teilzeichenfolgen mit Punkten ( ABC
und CDG
) insgesamt 5 Punkte haben und keine andere mögliche Konstruktion 5 oder mehr Punkte ergeben kann.
Teilzeichenfolgen können in einer Zeichenfolge mehrfach verwendet werden und sich überlappen. Sie können davon ausgehen, dass die Punkte immer positiv sind, die Länge der Teilzeichenfolgen zwischen 1 und N
Zeichen beträgt und dass N > 0
. Wenn mehrere Konstruktionen maximal sind, drucken Sie eine davon.
Ihr Programm muss in einer angemessenen Zeit ausgeführt werden (nicht mehr als eine Minute für jedes der Beispiele):
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
Dies ist ein Code-Golf , also bereiten Sie Ihre kürzeste Antwort in Ihrer Lieblingssprache vor!
DEF
Tupel fehlt ein Komma