给定一个数组:[狗,猫,老鼠]
什么是最优雅的方式来创建:
[,] [,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]); }