最近在學習了移位操作符後,利用移位輕鬆的解決了求乙個集合的所有
子集的問題。
如乙個子集為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 ...