【发布时间】:2015-05-05 10:02:24
【问题描述】:
让有一些正整数 Z 并让有 N 个非负整数的列表,标记为 z0 ... zn-1 什么是可以找到 Z 的最小倍数的算法,可以用以下形式表示所有 zi * ci 的总和,其中 ci 是任何非负整数常量?
这个算法需要运行时间 O(Z * ( N + log(Z) ))。
我尝试使用 djikstras 算法解决这个问题,并且据估计必须有 Z * N 个边和 Z 个顶点才能满足时间复杂度要求。我还发现每个 ni 最多可以有 Z 个不同的系数,因为 (min zi)/zi * Z 受 Z 约束。
也许有一些方法可以通过探索循环图设置来做到这一点?
【问题讨论】:
-
你是什么?问题陈述仅提及 Z、N、zi 和 ci。
-
另外我假设你的 zi 从 i=1 开始,而不是 i=0,否则有 N+1 个。
-
并且你的 ci 被限制为整数,否则问题是微不足道的。
标签: algorithm math time complexity-theory