利用移位運算求解子集

2021-07-28 06:32:01 字數 675 閱讀 3765

最近在學習了移位操作符後,利用移位輕鬆的解決了求乙個集合的所有

子集的問題。

如乙個子集為ac,則相應的二進位製碼為1010,依次判斷每一位,若該位為1,則取相應的元素;

public

class collection01;

int len=str.length;

//計算共有多少個子集

for(int i=0;i<(1

//右移一位,始終判斷最後一位元素

b>>=1;

}system.out.println("}");}}

}第二種方法:

public

class collection02;

int len=str.length;

//儲存所有子集的大集合

arraylist> list=new arraylist<>();

for(int i=0;i<(1

hashsetset=new hashset<>();

for(int j=0;j<(1

if(num&1)

num>>=1;

}list.add(set);

}//遍歷集合

for(hashsetx:list)

}}

利用位運算求子集

紫書第189頁 給你乙個集合,讓你求集合的所有子集 我們都知道長為n的集合子集個數為 2 n 個 包含了空集 一般都是遞迴求子集,沒想到還可以運用位運算求 具體思路就不展開了,總的來說就是每個元素在子集裡都有兩種情況 取或不取 可以用0和1來代表,這就跟位運算的性質所吻合 include defin...

leetcode 78 子集(位運算求子集)

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 分析 含有n個元素的集合共有 1 一位後與 1的方式判斷最後一位是0還是1,如果是1,就把對應位置的數加入到...

位運算求解N皇后的過程

8皇后可以用位運算來求,有點好奇的,不過,位運算這個強大的邏輯,沒有懷疑,用了n為4的,對於太大的控制台放不下。include define n 4 int result 0 int count 1 int upperlim 1 n 1 void com int row,int ld,int rd ...