假设我们给出了K不同的二进制数,每个都有长度N(N可以很大).是否有一种有效的算法来确定将这些数字相互区分所需的最小位数?
例如:
给定110和011,我们只需要检查第一个(或最后一个)位来区分它们,所以最小数量是1.
鉴于1000,0100,0010和0001,我们需要检查至少三位来区分,所以最少数量为3.
鉴于0000,0100,1000和1100,我们只需要检查的前两位,因此最小号码是2.
后续:输出要检查的相应索引.
编辑:假设这些二进制数表示为,...,.这个问题相当于找到最小的子序列,以便...,是不同的数字.a1[0,1,…,N-1]aK[0,1,…,N-1][i,j,…,m][0,1,…,N-1]a1[i,j,…,m]aK[i,j,…,m]