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

前端之家收集整理的这篇文章主要介绍了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]);
}

猜你在找的C#相关文章