栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

找到最小迭代次数以达到一定的总和

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

找到最小迭代次数以达到一定的总和

现在我可以提供

O(nlogn)
解决方案。

该方法似乎是最大公约数

使用

f(x, y)
表达此状态的最小迭代次数。可以通过
f(x-y, y)
if
x>y
f(x,y-x)
if
达到此状态
x<y
。我们可以看到达到状态的方式
(x,y)
是唯一的,我们可以
O(logn)
像gcd那样计算它。

答案是

min( f(n, i) | 1 <= i < n)
如此复杂
O(nlogn)

python代码:

def gcd (n, m):    if m == 0:        return n    return gcd (m, n%m)def calculate (x, y):    if y == 0:        return -1    return calculate (y, x%y) + x/ydef solve (n):    x = 0    min = n    for i in xrange (1, n):        if gcd (n, i) == 1: ans = calculate (n, i) if ans < min:     min = ans     x = i    print minif __name__ == '__main__':    solve (5)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号