现在的位置: 首页 > 综合 > 正文

隐含的排序问题 质量相同石头木头配对问题

2013年10月20日 ⁄ 综合 ⁄ 共 568字 ⁄ 字号 评论关闭


问题:有n块石头,n根木头,凭外观无法判断重量相对轻重,石头两两重量不同,木头两两重量不同,但是任何一块石头都有一根木头与其质量相同,给你一个天平,将其分成n对质量相同的<石头,木头>堆。[注:天平左边只能放石头,右边只能放木头]

天平两边可以放物体A和物体B,这样就可以A与B的重量大小关系,如果没有限制条件,那么就可以利用天平对石头和木头分别进行快排,快排以后得到的石头序列和木头序列一一对应,问题迎刃而解。由于没有砝码,所以不能确切的确定石头和木头的质量,只能确定其相对质量关系。

但是,问题限制天平左边只能放石头,右边只能放木头。这样,就只能比较石头和木头的相对质量大小了。

类似于快速排序,我们可以随机选择一块石头A,将木头分为两堆:

               比A重的木头堆M1

               比A轻的木头堆M2

以及与A重量相等的木头B,然后用木头B对石头进行同样操作,石头可以分为两堆:

               比B重的石头堆N1

               比B轻的石头堆N2

然后M1对N1,M2对N2,分别进行上述过程,时间复杂度为O(nlgn)。

最坏情形下的时间复杂度为O(n^2),为了杜绝最坏情况的发生,可以每次随机选择三块石头,取质量居中的石头,不过此时就与备注相矛盾了,在这里只是提供一种思路。

抱歉!评论已关闭.