java-对此代码如何计算功率集感到困惑
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-对此代码如何计算功率集感到困惑,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1285字,纯文字阅读大概需要2分钟。
内容图文
![java-对此代码如何计算功率集感到困惑](/upload/InfoBanner/zyjiaocheng/670/45a7127493b1480d8984a45cad65514c.jpg)
我在geeksforgeeks上发现了此功能,以查找给定集合的所有子集.我只是不确定嵌套的for循环中的if语句正在检查什么.我知道它使用按位AND运算符,但是我对它如何帮助知道在任何迭代期间要包含或不包含哪些元素感到困惑.
import java.io.IOException;
public class Main
{
// Print all subsets of given set[]
static void printSubsets(char set[])
{
int n = set.length;
// Run a loop for printing all 2^n
// subsets one by obe
for (int i = 0; i < (1<<n); i++)
{
System.out.print("{ ");
// Print current subset
for (int j = 0; j < n; j++)
//???what is this checking?????
if ((i & (1 << j)) > 0)
System.out.print(set[j] + " ");
System.out.println("}");
}
}
// Driver code
public static void main(String[] args)
{
char set[] = {'a', 'b', 'c'};
printSubsets(set);
}
}
解决方法:
如果Powerset中有三个项目,则有2 ^ 3个组合.
a, b, c
===
[]
[a]
[b]
[a, b]
[c]
[a, c]
[b, c]
[a, b, c]
您会注意到,这遵循二进制模式,其中每个位都与集合中的一个元素匹配.如果bit为0,则从结果中删除元素.
a, b, c
===
[0, 0, 0] -> [0*a, 0*b, 0*c] = []
[1, 0, 0] -> [1*a, 0*b, 0*c] = [a]
[0, 1, 0] -> [0*a, 1*b, 0*c] = [b]
[1, 1, 0] -> [1*a, 1*b, 0*c] = [a, b]
[0, 0, 1] -> [0*a, 0*b, 1*c] = [c]
[1, 0, 1] -> [1*a, 0*b, 1*c] = [a, c]
[0, 1, 1] -> [0*a, 1*b, 1*c] = [b, c]
[1, 1, 1] -> [1*a, 1*b, 1*c] = [a, b, c]
if((i&(1<<< j))> 0)行用于检查该位以过滤结果.
内容总结
以上是互联网集市为您收集整理的java-对此代码如何计算功率集感到困惑全部内容,希望文章能够帮你解决java-对此代码如何计算功率集感到困惑所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。