loops - 展开“m”相关循环
问题描述
考虑我有以下嵌套for-loops
:
for(i1=1 to n)
for(i2=1 to i1)
for(i3=1 to i2)
for(i4=1 to i3)
for(i5=1 to i4)
count++;
会增加多少倍count
?
如果有 'm' 个这样的依赖循环,我们如何计算 count 变量的值?
解决方案
您可以尝试一些数字并得到答案。(在您的示例中,m = 5
您将1,6,21,56,126
获得n
equal 1,2,3,4,5
)
提示- 它将是Binomial coefficients C(n,5)
(您可以使用The On-Line Encyclopedia of Integer Sequences找到这个)
所以对于m
嵌套循环,你将得到count
等于C(n+m-1,m)
-> 因为 minimum 是选择m
元素,所以m
m 的二项式系数中的第一个元素是 0 - 你可以在这里了解更多信息。
为什么这是答案?它实际上是数学问题-但简单的解释:检查Pascal's triangle
-它是数字之间的差异之和-您的情况,每个循环取两个较高的总和-在您的循环中,每个循环都执行到较高的索引-相同的方法
推荐阅读
- mysql - 如何在 SELECT 语句中创建一个计算列来确定某个成绩是否是奖励给学生的最新成绩?
- javascript - 使用 javascript 的通配符重定向?
- hash - 即时计算CRC,可能与否
- c++ - 如何创建 CMAKE 脚本来构建带有嵌入式 Python 的 C++ 应用程序?
- python - Pandas 错误:'[nan nan] not found in axis' 同时删除没有标签的列
- javascript - 尝试在我的反应应用程序中更新状态,然后使用复选框向 Rails 后端发送一个放置请求
- angularjs - 延迟加载模块时面临问题(找不到模块)
- macos - 如何获得“com.apple.developer.driverkit.userclient-access”的权利?
- wechat - 如何找到关注微信服务账号的微信个人账号的OpenId
- hadoop - 如何修复“resouce-types.xml”错误?