我有一个元素列表 (1, 2, 3),我需要获取该列表的超集(幂集)(不重复元素)。所以基本上我需要创建一个列表列表,如下所示:
{1}
{2}
{3}
{1, 2}
{1, 3}
{2, 3}
{1, 2, 3}
实现此目的的最佳方法是什么(在这种情况下简单>效率,列表不会很大)?最好使用 Java,但任何语言的解决方案都会有用。
使用位掩码:
int allMasks = (1 << N);
for (int i = 1; i < allMasks; i++)
{
for (int j = 0; j < N; j++)
if ((i & (1 << j)) > 0) //The j-th element is used
System.out.print((j + 1) + " ");
System.out.println();
}
以下是所有位掩码:
1 = 001 = {1}
2 = 010 = {2}
3 = 011 = {1, 2}
4 = 100 = {3}
5 = 101 = {1, 3}
6 = 110 = {2, 3}
7 = 111 = {1, 2, 3}
你知道在二进制中第一位是最右边的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)