将所有大小为 n 的二进制字符串生成布尔数组的最快方法?
例如,如果我想要长度为 3 的所有二进制字符串,我可以简单地这样声明它们:
boolean[] str1 = {0,0,0};
boolean[] str2 = {0,0,1};
boolean[] str3 = {0,1,0};
boolean[] str4 = {0,1,1};
boolean[] str5 = {1,0,0};
boolean[] str6 = {1,0,1};
boolean[] str7 = {1,1,0};
boolean[] str8 = {1,1,1};
将所有可能的长度为 N 的二进制字符串生成到布尔数组中的最有效方法是什么?
我不一定需要最有效的方法,只需要一种相当高效且易于多线程处理的方法。
编辑:我应该注意,如果重要的话,我将把它们全部存储在 ArrayList 中。
For example, if I wanted all binary strings of length 3 I could simply declare them like this:
boolean[] str1 = {0,0,0};
boolean[] str2 = {0,0,1};
boolean[] str3 = {0,1,0};
boolean[] str4 = {0,1,1};
boolean[] str5 = {1,0,0};
boolean[] str6 = {1,0,1};
boolean[] str7 = {1,1,0};
boolean[] str8 = {1,1,1};
What is the most efficient way to generate all possibly binary strings of length N into a boolean array?
I don't necessarily need the most efficient method, just one that's fairly efficient and easy for me to multithread.
EDIT: I should note that I will be storing them all in an ArrayList, if that matters.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
下面是一些生成真值表的代码...(由于数组大小限制,仅适用于 32 位(如果需要,您可以将大小变量更改为任意值并将布尔值存储为 1/0):
Here's some code to generate a truth table... (works for only for 32 bits because of array size limits ( you can change the size variable to whatever and store booleans as 1/0 if you want):
示例:如果您需要长度为 4,则必须有 2^4 = 16 个不同的数组。
您可以使用这个简单的 Java 代码来生成所有数组:
其输出:
Example: If you need of length 4, then you must have 2^4 = 16 different arrays.
You can use this simple Java code to generate all arrays:
The output of this:
如果您不关心一次拥有所有排列,明智的做法是事先不分配内存并简单地编写一个计算
strX 的算法
你想要的,即时的。这样做的优点:
为了让您开始,该算法的界面可能看起来像这样:
因此,您可以调用
getRow(5,3)
来获取从函数返回的str5
。我将细节留给您来实现(这并不难)。If you do not care about having all the permutations at once, a smart thing to do is to allocate no memory beforehand and simply write an algorithm which calculates the
strX
you want, on-the-fly.Advantages of doing this:
To get you started, the algorithm's interface can look something like this:
So you would call
getRow(5,3)
to getstr5
returned from the function. I leave it up to you to implement the details (it's not hard).在函数中实现它-
使用示例-
Implemented it in a function-
example of usage-
这就是我在 Java 中的做法
This is how I did it in Java
与重复问题相关的
javascript
实现 https ://stackoverflow.com/questions/42591231/calculate-all-possible-combinations-of-n-off-on-elements。与所有数字一样,数字组之间存在关系,一旦识别出模式,就可以使用加法来导出数组集中特定索引处的数字组之间的关系。
javascript
implementation relevant to duplicate Question https://stackoverflow.com/questions/42591231/calculate-all-possible-combinations-of-n-off-on-elements.As with all numbers, there is a relationship between sets of numbers, where once the pattern is recognized, addition can be used to derive the relationships between sets of numbers at specific indexes within an array sets.
这就是我在 Scala 中实现它的方式
示例输出:
感谢我的朋友 James A.
This is how I implemented it in Scala
Sample output:
Thanks to my friend James A.