Binomialfunktion Wählen Sie (n, r) = n!/(R! (Nr)!) So schreiben Sie a Programm zur Berechnung von 10^8 = 100 Millionen zufälligen Binomen mit N zufällig ausgewählt von 1 bis 52, und R zufällig ausgewählt 0 bis n.Berechnen von Binomen Wählen Sie (n, r) = n!/(R! (Nr)!) Unter Verwendung von Memo
Sie müssen das Binom in O (1) Zeit berechnen, indem Sie eine Memo-ierung oder etwas Ähnliches verwenden.
Mein Code ist so. Ich weiß, dass bei jeder Rekursion ein Element zweimal berechnen kann, ich weiß nicht, wie man es effizienter machen kann, wenn man Memoization verwendet.
public static int choose(int n, int k){
if(k == 0) return 1;
return (n * choose(n - 1, k - 1))/k;
}
Dies scheint eine Hausaufgabe zu sein. Versuchen Sie, Code zu schreiben, um die Anforderung zu erfüllen. Fragen Sie dann, ob Sie spezielle Probleme haben. – Bryce
Wenn N und R niedrig sind, möchten Sie wahrscheinlich die Pascal-Dreieck-Formel verwenden, nicht die, die Sie im Fragetext haben. Dennoch passt der Wert C (50, 25) nicht in ein "int", also würde ein "long" benötigt. – Gassa
1430 Binome (es sei denn, ich habe einen Fehler mit meiner Mathematik gemacht, aber es sollte zumindest in der Nähe sein) und 100mio binomials? Baue einfach einen Tisch. Oder geht es um die Berechnung der Binome selbst? Und verwenden Sie 'long', um Überlauf zu vermeiden. – Paul