Я делаю проект эйлера, и я сейчас в проблеме 15, вот ссылка: https://projecteuler.net/problem=15. Я пытаюсь решить это с помощью биномиального коэффициента. Вот сайт, который его объясняет: http://www.mathblog.dk/project-euler-15/. Вы можете найти его внизу.Зачем нужен следующий код? биномиальный коэффициент
Мой вопрос: почему следующий код не так? Поскольку это следует за математическим алгоритмом, я думаю: 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();
И почему этот код не так? Это точно так же, как и сайт mathblog, но в 1 строке.
int grid = 20;
long paths = 1;
for (int i = 0; i < grid; i++)
{
paths *= ((grid * 2) - i)/(i + 1);
}
Console.WriteLine(paths);
Console.ReadKey();
Но почему именно этот код? Разве это не так, как предыдущий код? И это точно не соответствует математическому алгоритму? Потому что это n-k + i/i, и этот код делает n-i/i
int grid = 20;
long paths = 1;
for (int i = 0; i < grid; i++)
{
paths *= ((grid * 2) - i);
paths /= (i + 1);
}
Console.WriteLine(paths);
Console.ReadKey();
Thnx guys!
Попробуйте использовать «двойные пути» вместо 'long'. До тех пор, пока это целое число, ваша проблема может быть округлой в разделе – Magnetron
. Второй блок кода отличается от того, что находится в указанном вами URL-адресе. Должен быть «paths = (paths * (grid * 2) - i)/(i + 1);' если вы хотите его однострочно. То, что вы написали, совпадает с «paths = paths * (((grid * 2) - i)/(i + 1));' –
Последний код работает, но я не понимаю, почему: P Потому что в моих глазах если я правильно следую математическому алгоритму, я должен использовать первый код в своем комментарии. (Я не математик, поэтому я могу ошибаться). Кроме того, это не второй код, а последний код тот же? В любом случае последний код работает. – Mathijs