C# · 12月 27, 2021

c# – 如何获取数组的所有子集?

给定一个数组:[狗,猫,老鼠]

什么是最优雅的方式来创建:

[,][,mouse][,cat,mouse][dog,][dog,mouse]

我需要这个工作任何大小的阵列.

这本质上是一个二进制计数器,其中数组索引表示位.这可能让我使用一些按位操作来计数,但是我看不到一个很好的方法来将其转换为数组索引.

解决方法 string[] source = new string[] { “dog”,”cat”,”mouse” }; for (int i = 0; i < Math.Pow(2,source.Length); i++) { string[] combination = new string[source.Length]; for (int j = 0; j < source.Length; j++) { if ((i & (1 << (source.Length – j – 1))) != 0) { combination[j] = source[j]; } } Console.WriteLine(“[{0},{1},{2}]”,combination[0],combination[1],combination[2]);}