二進位制壓縮 演算法

2021-08-05 21:50:45 字數 781 閱讀 2348

二進位制壓縮

在程式設計時遇到每個資料只有兩種狀態,且 dfs 或者 bfs 時遍歷時間複雜度高時,可以採用二進位制壓縮資料,尤其是二維陣列。

1.二進位制壓縮乙個二位陣列

例如:

-+--

----

----

-+--

正常儲存資料回使用二位陣列,'+' -> 1,'-' -> 0,即

0100

0000

0000

0100

如果我們採用二進位制壓縮為乙個 int 型別的資料,正好用 16 位來表示。

這裡有兩種表示方法,其實都一樣,一種先從上到下變為從高位到低位,一種是從上到下變為從低位到高位。

從低位到高位

int input = 0;

int data = new

int[4][4];

scanner sc = new scanner(system.in);

string line = "";

for (int i = 0; i < 4; i++)

}for (int i = 0; i < 16; i++)

}

從高位到低位

int input = 0;

scanner sc = new scanner(system.in);

string line = "";

for (int i = 0; i < 4; i++)

}

二進位制狀態壓縮

二進位制狀態壓縮,即將乙個長度為m的bool陣列用乙個m位的二進位制數來表示和儲存 操作運算 取出整數n在二進位制表示下的第k位 n k 1 取出整數n在二進位制表示下的第0 k 1位 後 k 位 n 1 取出整數n在二進位制表示下的第k位取反 n xor 1 取出整數n在二進位制表示下的第k位賦值...

二進位制資料壓縮演算法

zlib gzip deflate lzfse 1,zlib和gzip都對deflate進行了封裝,比deflate多了資料頭和尾 1,蘋果開源了新的無失真壓縮演算法 lzfse 該演算法是去年在ios 9和os x 10.10中 引入 的。按照蘋果公司的說法,lzfe的壓縮增益和zlib leve...

二進位制演算法

首先是6個二進位制的運算子 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變...