定義常量並賦乙個很大的值
方法一:
int minarea = 1 << 30;
minarea = 1073741824,《表示將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。
例:a = a << 2 將a的二進位制位左移2位,右補0,左移1位後a = a * 2; 若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。1<<30 表示1左移30位,每左移一位乘以2,所以就是1*2^30=1073741824。
方法二:
unsigned int x = 0,則 x-1 等於unsigned int型別的最大值。根據不同編譯器的unsigned int大小不同得出的結果不同,vc6.0的結果為4294967295即2^32-1。該技巧常用語為unsigned int初始最大值。
方法三:
infinity
取中間數
int middle = ((end - start) >> 1) + start;
//>>運算規則:按二進位制形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補符號位,
//即正數補零,負數補1.
除以2
n >> 1
判斷是否為奇數
if ((n & 0x1) == 1)
用合理的編碼表示「狀態」,減小儲存代價
二、8.2.1 廣搜與八數碼問題(coursera 程式設計與演算法 專項課程4 演算法基礎)
C 程式設計小技巧
1.乙個應用程式只能被使用者開啟一次 process mobj pro process.getcurrentprocess process mobj prolist process.getprocessesbyname mobj pro.processname if mobj prolist.len...
C 程式設計小技巧
1 使用常量引用形式,將map作為形參傳遞時的問題 void test const unordered map um 上述 將不能通過編譯。原因 map的運算子會在索引項不存在的時候自動建立乙個物件,而常量不能改變。解決辦法 使用迭代器替換即可,如下例所示。void test const unord...
C 程式設計小技巧
記錄c 開發過程中遇到一些小技巧,隨時更新 xml xmlignore public bool login 序列化成xml的時候忽略本欄位 json newtonsoft.json.jsonignore public string devicetype 序列成json的時候忽略本欄位 xmlelem...