gpt4 book ai didi

c# - 如何获得位数组的所有排列

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:11 25 4
gpt4 key购买 nike

如何生成 n 大小的位数组的所有排列?

我的意思是,例如,如果 1 和 0 的数组具有整数类型,我可以这样做

for (int i = 0; i <= ~(-1 << n); i++)
string s = Convert.ToString(i, 2).PadLeft(n, '0');

和 s 将包含一些排列,例如 101010 或 100000 等。所以我可以获得所有排列。例如对于 n=3

000
001
010
011
100
101
110
111

但是如何对位数组做同样的事情呢?(因为我需要异或运算等等)

最佳答案

我现在没有打开 VS,但你可以使用 BitArray(byte[]) constructor .

for (var i = 0; i < 1 << n; i++)
{
byte[] bytes = BitConverter.GetBytes(i);
var bitArray = new BitArray(bytes);
}

您必须进行试验并提出将 int 转换为字节的移位逻辑。

如果您需要大于 32/64 位,那么您显然需要另一种方法。

关于c# - 如何获得位数组的所有排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com