我已经给出了x
和y
项,我需要选择一些x
和一些带有一些限制的y
项,比如x < 10
和y < 5
,总数应该是p
。
如何解决这个问题。算法/数学技术。
最佳答案
诀窍是我们只需要遍历一个数组(例如x_数组),我们可以使用p-x=y计算出y。现在我们只需要确保y在y_数组中,我们知道我们有答案。为了确保y在y_数组中,我们创建一个集合或二叉搜索树来快速查找。
下面是一些python代码:
p=13
xs=[1,3,99,9,18]
ys=[10,4,33]
y_set=set(ys)
#y=p-x
results=((x,p-x) for x in xs if x<10 and p-x<5 and p-x in y_set)
print "x=%s,y=%s,p=13" % results.next()
'x=9,y=4,p=13'