c#二维数组的所有组合

时间:2015-09-02 16:45:56

标签: c# arrays

我有2D数组[,]。我想通过第二列到第三列将所有可能的组合多个第一列元素并将其放入新的1D数组中让我们说 每列包含4个元素,因此包含组合乘法的finial数组所有列数组大小为4 * 4 * 4 = 64(所有组合)。

ans[0]=array[0,0]*array[0,1]*array[0,2]
ans[1]=array[0,0]*array[0,1]*array[1,2]
ans[2]=array[0,0]*array[0,1]*array[2,2]
.
.
.
ans[64]=.....

如果你能帮助我,我将非常感激 谢谢。

1 个答案:

答案 0 :(得分:1)

对于2次切换,将所有组合的数量分成3组位将为您提供所有索引组合。样本为4 * 4 * 4:

var result = Enumerable.Range(0,64)
  .Select(id => 
       array[(id & 0x18) >> 4, 0] *   // bits 4,5
       array[(id & 0x0C) >> 2, 1] *   // bits 2,3
       array[(id & 0x03) >> 0, 2])    // bits 0,1
  .ToArray();

否则标准"获得所有组合"方法将起作用 - 即Combination Generator in Linq