我有一个函数,它接受两个对象作为参数:a
和b
该函数检查(使用很长的算法)这些对象中的哪一个更好。你知道吗
如果a更好它返回-1,如果b更好它返回1,如果他们平手它返回0
我的问题是:
我有21个这样的对象在一个列表中。你知道吗
我需要找出,使用上面的函数(函数不能 改变了,唯一的方法就是比较两个物体,这是一个非常复杂的问题 和长算法),这21个对象中哪一个是最好的。你知道吗
我花了好几个小时思考如何高效地完成这项工作,而不必做太多次相同的比较,如何编写一个算法,找出哪一个是最好的(如果两个并列,而且两个都是最好的,那么选择哪一个并不重要,尽管我认为并列甚至不可能发生),但我没能来有什么好的吗。你知道吗
函数名为handCompare(a, b)
对象在名为Combos
的列表中找到,len(combos)
是21
我需要一个算法,将找出组合列表中的最佳项目
感谢您的阅读,我希望您能帮助:)
最简单的方法是:用比较函数
__cmp__
(python2.x)或define__lt__
和__eq__
(python3.x)为每个对象创建一个对象。把每一个都藏在一个名为list\的列表中。用min(list)求最小值。你知道吗一个可能有用的优化,如果可行的话:如果你能想出一种方法将你的对象映射到(可能是大的)整数,比如x的整数是<;y的整数,如果原始对象ox是<;原始对象oy,那么取一个最小的整数。如果对你的类型可行的话,这应该会稍微加快速度。你知道吗
如果将
hand_compare()
更改为返回1
(如果a更好)和-1
(如果b更好),则这将起作用。你知道吗相关问题 更多 >
编程相关推荐