将两个连续排序的整数集映射到一个整数集

时间:2010-10-12 21:04:42

标签: algorithm integer set

我试图将两个连续排序的整数集(具有可能不同数量的项)映射到保持线性间距的单个连续排序整数集。

e.g。 答:{1,2,3} B:{1,2,3,4} 可以映射到 C:{1,2,3,4,5,6,7} 通过 A:{1-> 1,2-> 4,3-> 7}和 B:{1-> 1,2-> 3,3-> 5,4-> 7}

每个人都可以手动完成这些操作,但我很难概括。

分解问题,我需要找到(1)输出集中的桶数和(2)输入 - >输出映射

我的解决方案在这里提供:

  

//输出C中有LCM(| A | -1,| B | -1)+1桶

     

int numBuckets = LCM(   A.Count() - 1,B.Count() - 1)+ 1;

     

//将A中的元素映射到桶中   输出C

     

for(int i = 0; i< A.Count(); i ++)
  {       mapping.Add(A.ElementAt(i)中,       (i *((numBuckets - 1)/(A.Count() -       1)))的ToString()); }

1 个答案:

答案 0 :(得分:0)

假设集合C的大小为 | C | = Nc ,对于集合A, | A | = Na 。然后,如果要将 A 映射到 C ,请让第一个元素相互映射,然后通过

跳过元素
floor( (Nc-1)/(Na-1) )