二進位制壓縮
在程式設計時遇到每個資料只有兩種狀態,且 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變...