Ich mache Projekt Euler und ich bin bei Problem 15 jetzt, hier ist ein Link: https://projecteuler.net/problem=15. Ich versuche das mit Binomialkoeffizienten zu lösen. Hier ist eine Seite, die es erklärt: http://www.mathblog.dk/project-euler-15/. Sie können es unten finden.Warum ist der folgende Code falsch? Binomialkoeffizient
Meine Frage ist, warum ist der folgende Code falsch? Da dies dem mathematischen Algorithmus folgt, denke ich: n-k + i/i
int grid = 20;
long paths = 1;
for (int i = 0; i < grid; i++)
{
paths *= (grid * 2) - (grid + i)
paths /= (i + 1);
}
Console.WriteLine(paths);
Console.ReadKey();
Und warum ist dieser Code falsch? Dies ist genau wie die Mathblog-Seite, aber in 1 Zeile.
int grid = 20;
long paths = 1;
for (int i = 0; i < grid; i++)
{
paths *= ((grid * 2) - i)/(i + 1);
}
Console.WriteLine(paths);
Console.ReadKey();
Aber warum ist dieser Code dann richtig? Ist es nicht dasselbe wie der vorherige Code? Und es folgt nicht genau dem mathematischen Algorithmus, oder? Weil es n-k + i/i ist, und dieser Code tut n-i/i
Thnx Jungs!
Versuchen Sie es mit 'Doppelpfaden' anstelle von' Lang'. So lange eine Ganzzahl ist, könnte Ihr Problem die Aufrundung in der Abteilung – Magnetron
sein. Ihr zweiter Codeblock ist nicht derselbe wie in der URL, die Sie verlinkt haben. Sollte 'paths = (Pfade * (grid * 2) - i)/(i + 1);' wenn du es einzeilen willst. Was Sie geschrieben haben ist das gleiche wie 'Pfade = Pfade * (((Grid * 2) - i)/(i + 1));' –
Der letzte Code funktioniert, aber ich verstehe nicht warum: P Weil in meinen Augen Wenn ich dem mathematischen Algorithmus richtig folge, sollte ich den ersten Code in meinem Kommentar verwenden. (Ich bin kein Mathematiker, damit ich falsch liegen könnte). Ist der 2. Code und der letzte Code nicht gleich? In jedem Fall funktioniert der letzte Code. – Mathijs