我有2个参数,我希望方法返回一个int结果..我得到了这个代码,但我不明白naff所有关于binoms等,不知道如何“转换”它
已将double BC[126][126];
定义在其上方的某处。但我不需要,我只想要这些n和m的结果。 (我可能听起来像是那样的numpty)
private void binom(int n, int m) {
int i, j;
if (n>=0)
if (m>n||m<0) System.err.println("Illegal m!!\n");
else {
for(i=0;i<=n;i++) BC[i][0] = 1;
for(i=1;i<=m;i++) BC[0][i] = 0;
for(j=1;j<=m;j++) for(i=1;i<=n;i++)
BC[i][j] = BC[i-1][j-1] + BC[i-1][j];
}
else System.err.println("Negative n!!\n");
}
答案 0 :(得分:2)
您可以返回BC[n][m]
这是您计算的元素,其中包含三个循环..
顺便说一下,你至少有三种可能的实施方式:
n! / (n-m)!m!
这是不好的,因为事实操作很烦人更正:如果您在每次调用方法时都避免重新计算所有系数,那么您的方法将是动态编程,但不是您的情况..
答案 1 :(得分:2)
请参阅文章Computing Binomial Coefficients以获得具有相似复杂性的示例 O(n 2 ),但仅使用 O(n) space而不是 O(n 2 )。