gpt4 book ai didi

c - C 中所有固定长度的二进制排列

转载 作者:行者123 更新时间:2023-11-30 21:47:10 25 4
gpt4 key购买 nike

我搜索过这个主题,但找不到。问题是:给定一个整数n,生成一个包含01的所有2^n组合的数组.

例如,当n = 2时,我们应该得到{{0, 0}, {0, 1}, {1, 0}, {1, 1 }}。我发现 itertools.productPython 中使用参数 repeat 执行此操作(但我的雇主希望严格使用 C >).

我需要该代码适合 n = 24, 25 情况(并且足够快 - 这是我雇主的需求)。

另外,我还有一个问题。 C 是否有与 Python 中的 Generator 类似的东西?

编辑

我在这里看到了很多-ve反馈。对于这种困惑,我真的很抱歉。在这里我尝试重新构建我的问题:

我有一个由 160 元素组成的数组,其中仅标记了 24 (或 25)(存储了这些标记元素的索引在一个单独的数组中)。我需要将所有 160 元素 2^24 次 - 每次一个或多个标记元素将被其替换,并执行一些操作(此操作需要 160 个元素,每次都会产生一个二进制响应,我需要对所有响应进行异或)。我怎样才能有效地做到这一点?

我工作的农场经理除了 C 之外不会。因此,他希望用 C 来完成。

*每个元素都是一个二维数组。

编辑#2

也许,我仍然无法澄清我所困扰的问题。我正在伪代码的基础上工作:

all_elements = { <collection of elements> };
all_marked_elements = { <collection of 24 marked elements> };
all_combinations = { <all 0, 1 combinations of length 2^24> };

int operation (<160 elements>) {
...
return 0 or 1;
}

x = 0;

foreach (c in all_combinations) {
e = {};
for (i >= 0; i <= 23; i=i+1) {
if (c[i] == 1) {
append all_marked_elements[i] to e;
}
}
d = get dual of all elements in e;
x xor= operation ( <all_elements with e replaced by d>);
}
show x;

最佳答案

实际上,您只需要查找整数中的位即可。如果你有 25 位,你的排列对应于所有数字 0<= i < 2^25 的位序列,适合简单的 unsigned int 。您不需要“生成”并存储这些数字,只需在需要排列的地方使用它们即可。

关于c - C 中所有固定长度的二进制排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476374/

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