加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:00:23 所属栏目:百科 来源:网络整理
导读:给定一个数组:[狗,猫,老鼠] 什么是最优雅的方式来创建: [,][,mouse][,cat,mouse][dog,][dog,mouse] 我需要这个工作任何大小的阵列. 这本质上是一个二进制计数器,其中数组索引表示位.这可能让我使用一些按位操作来计数,但是我看不到一个很好的方法来将其转
给定一个数组:[狗,猫,老鼠]

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

[,]
[,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]);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读