Diese nicht gleichmäßig teilbar sind, ist eine Praxis Problem, das ich bin Lösung:maximale Teilmenge von ganzen Zahlen, die von k
eine Menge S von verschiedenen ganzen Zahlen gegeben, die Größe einer maximalen Teilmenge S‘von S drucken wobei die Summe aus alle 2 Zahlen in S 'sind nicht gleichmäßig durch k teilbar.
Mein Ansatz war, das Problem auf die Teilmenge zu begrenzen S[0...i]
wobei 0 < i < = n-1 und die Länge der maximalen Teilmenge für dieses Teilproblem bestimmen, erweitern Sie dann die Subproblem von 1. Ich weiß, dass es ein anderer Ansatz ist zu diesem Problem, aber ich bin verwirrt, warum meine Lösung nicht funktioniert.
ex) für n = 10, k = 5 und S
= [770528134, 663501748, 384261537, 800309024, 103668401, 538539662, 385488901, 101262949, 557792122, 46058493]
dp = [0 for _ in range(n)]
dp[0] = 1
for i in range(1, n):
flag = 0
for j in range(i):
if s[j] == "#":
pass
elif (not s[j] == "#") and (s[j] + s[i])%k==0:
dp[i] = dp[i-1]
flag = 1
s[i] = "#"
break
if not flag == 1:
dp[i] = dp[i-1] + 1
print dp[-1]
Der Ausgang 6
aber meine Funktion druckt 5
sein sollte. Was ich versuche zu tun ist von j=0
zu i
iterieren und prüfen, ob für irgendwelche j
< i
wenn (s[j] + s[i])%k==0
. Wenn dies der Fall ist, dann wäre die Betrachtung von s[i]
in S 'fehlerhaft, stattdessen markieren Sie s[i]
mit einer #
, um anzuzeigen, dass es nicht in S' ist.
Wenn Sie in der Problembeschreibung 'beliebige 2 Zahlen in S'angeben, meinen Sie irgendwelche 2 * eindeutigen * Zahlen? Oder, in Ihrem Beispiel, wo 'k = 5 ', wäre' 5' immer ausgeschlossen, da 5 + 5 durch 5 teilbar ist? –
beliebige zwei verschiedene Zahlen. '5' ist nicht in S, also wäre es nicht S'. irgendwelche zwei Zahlen in "S" sind unterschiedlich –
Sie sagen also, wenn 5 in S wären, könnte es auch in S 'sein? Ich weiß, dass diese Frage nicht Ihr spezielles Beispiel betrifft, aber ich nehme an, dass Sie Code wollen, der für alle Sätze funktioniert. –