競賽編程技巧

· 二進制集合枚舉子集

舉一個二進制集合的子集,可以看做原集合忽略0之後不斷-1
就有了這樣一種算法:

for (int i = s; i; i = (i - 1) & s)

i - 1使得末尾的0全部變成1,但是由於&s,原來是0的位無論如何也不會變成1,但是原來是1的位就形成了不斷-1的模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章