【发布时间】:2015-09-02 03:05:46
【问题描述】:
给定 phi、theta、n_1 和 n_2 的值,我需要找到满足以下条件的所有可能对(N_1、N_2):
0 <= N_1 <= n_1
0 <= N_2 <= n_2
N_1 - phi * N_2 >= theta
在 Python 中最有效的方法是什么?显然我可以使用两个for 循环——遍历N_1 和N_2 的所有可能值(来自前两个标准),并且只保存那些满足最后一个标准的对——但这将是相当低效的.
【问题讨论】:
-
首先,您可以将最后一个不等式中的
(-phi * N_2)从左侧移到右侧:N_1 >= theta + phi * N_2,这定义了N_1的下限。其次 - 是phi、theta、n_1、N_1、n_2、N_2整数? -
@soon (1) 是的。 (2) 所有
ns 和Ns 都是非负整数。phi和theta不一定是整数。phi必须为正数。看起来theta通常是非负数。
标签: python loops combinations combinatorics python-collections