开发者社区> 问答> 正文

尝试计算代码中的操作数

我最近正在阅读Sedgewick的Algorithms Book,并且遇到了一个我不太了解的示例...

Sedgewick使用此代码提到if语句正好运行 N x(N-1)(N-2)/ 6次。

我不太明白为什么会这样。...我看到有三重嵌套循环,每个循环的上限都在增加,但是为什么将值除以六?

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 16:41:02 454 0
1 条回答
写回答
取消 提交回答
  • 我要求您的理解是我不擅长数学,所以解释可能有点俗气。

    为了if(a[i] + j[i] + k[i])在代码内执行“ 语句”,指出Tripple for循环中数组“ a”索引的变量i,j和k必须符合语句的条件(0<= i <j<k <N),对吗?

    例如,N为4。 似乎可以通过排列(4P3 = 4 ^ 3)来选择四个中的三个,但是如果如上图所示在'i'中选择了4,则可以看到进度在'j'for循环中被阻止(j = 4 + 1; j <4; j ++)。

    因此,我们无法获得以简单序列运行if语句的次数。

    我们需要的是组合(nCr)。

    当索引从0到N-1时,i < j < k可以通过公式nC3获得满足(=> if语句可以运行)的情况(i,j,k)的数量。

    根据此公式,如果语句精确运行N x(N-1)(N-2)/ 6次

    希望您能很好理解,否则请发表评论!祝你今天愉快!

    回答来源:Stack Overflow

    2020-03-27 16:41:44
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载