ich lese nun schon seit einiger Zeit in diesem Forum mit. Und das mit großem Vergnügen.
Jetzt bin ich an einem Punkt, an dem ich das Gefühl habe, ohne Eure Unterstützung nicht weiterzukommen. Es geht um die Berechnung des Binomialkoeffizenten, die in einer SPOJ-Aufgabe erforderlich ist (Marbles).
Die Berechnung in Python ist nicht schwierig, und ich finde keine offensichtliche Ineffizienz in meinem Code. Bei SPOJ erhalte ich aber immer nur eine Laufzeitüberschreitung.
Wie kann ich den Code beschleunigen?
Code der Berechnungsfunktion, Python 2.5, nur Standardbibliothek
Code: Alles auswählen
def choose(n, k):
if not 0 <= k <= n:
return 0
if k == 0 or k == n:
return 1
if 2 * k > n:
k = n -k
ntok = 1
for t in xrange(min(k, n-k)):
ntok = ntok * (n-t) /(t+1)
return ntok
Daft