(位運算)(搜尋)Flip Game

2021-10-25 00:18:36 字數 1175 閱讀 2843

poj 1753

4*4的棋盤,放置了16個白色和黑色的兩種棋子,進行翻轉操作(上下左右中都變反),計算全部為乙個顏色最小的次數

▶ 只有兩種狀態→看成0和1→4*4的棋盤看成16位的二進位制數

① 每一種狀態對應乙個數字,只要看這個數字有沒有重複出現,就知道了這個狀態出現了幾次

② 16個位置依次翻轉判斷就xin啦

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int pos[5]

=;//上下左右中

bool record[

99999];

//包含2的16次方

intmain()

else

b[i]=0

;}if(c==

16|| c==0)

//一開始直接

queue16>> q;

q.push

(b);

int cnt =0;

int f =-1

;while

(q.size()

)if(f!=-1

)break

;int re = temp.

to_ulong()

;if(record[re]

)continue

; record[re]=1

;for

(int i=

0; i<

16; i++

) q.

push

(bb);}

}if(f!=-1

)break

; cnt++;}

if(f!=-1

) cout

cout<<

"impossible"

}

① 兩個狀態,看成01,進行位運算,用自帶的函式,如flip,tolong,方便快捷~

② 把棋盤看成一列之後,第幾行第幾列的表達方式

mysql按位搜尋 MySQL按位運算,布隆過濾器

布隆過濾器本質上需要表掃瞄來評估匹配。在mysql中,沒有布隆過濾器型別。簡單的解決方案是將布隆過濾器的位元組對映到bitinteger 8位元組字 並在查詢中執行檢查。因此,假設bloom過濾8個位元組或更少 乙個非常小的過濾器 你可以執行乙個準備好的語句,如 select from test w...

位運算(1) 初識位運算

前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。廢話不多說,今天準備總結總結關於位運算的知識。程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0 1兩種狀態,...

位運算子和位運算

一 按位與 運算子 1 運算規則 參加運算的兩個 資料,按二進位進行 與 運算,如果兩個相應的二進位都為1,則該位的結果值為1,否則為0,即 0 0 0,0 1 0,1 0 0,1 1 1.2 用途 1 清零 運算物件 原來的數中為1的位,新數中相應位為0。2 取乙個數中某些指定位。如想要取乙個整數...