我正在做欧拉项目,现在遇到问题 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();
为什么这段代码是错误的?这与数学博客网站完全一样,但只有 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();
感谢大家!
最佳答案
如果要合并计算应该是这样的
paths = (path *((grid * 2) - i))/(i + 1);
关于c# - 为什么下面的代码是错误的?二项式系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40243938/