位操作 對優化演算法有了個新的認識

2021-04-13 09:02:46 字數 702 閱讀 5437

好久沒來csdn了,今天想問個關於c讀取扇區的問題(沒人回答..),結果看到乙個n皇后問題最快的演算法,看了好一會才明白,這演算法巧妙之處我認為有2個:

1.以前都是用陣列來描述狀態,而這演算法採用是的位來描述,運算速度可以大大提公升,以後寫程式對於描述狀態的變數大家可以借鑑這個例子,會讓你的程式跑得更快                       

2.描述每行可放置的位置都是只用row,ld,rd這3個變數來描述,這樣使得程式看起來挺簡潔的.

下面是程式,自己加了些注釋:

#include

#include

#include

long sum = 0, upperlim = 1;             //sum為排列的總數, upperlim為n個位為1的數

void test(long row, long ld, long rd)    //row,ld,rd分別為上面的所有皇后在該行吃掉的列位,左右對角線位

}else sum++;

}int main(int argc, char *argv)

printf("%d 皇后/n", n);

upperlim = (upperlim << n) - 1;

test(0, 0, 0);

printf("共有%ld種排列, 計算時間%d秒 /n", sum, (int) (time(0) - tm));

}

今天有位大神離職了

今天我的大神經理離職了。一年前,大神成為我的經理,為我點了一盞明燈 可以說是職業道路上的第一盞燈嗎?在大神的帶領下,我覺得自己有了很大進步。大神把我們當作當年的自己一樣關照。在過去的一年裡,我幹著自己最喜歡的敲 大神保護著我們盡量不受不合理任務的影響。我知道大神已經盡了他最大的努力,雖然仍然還有極不...

有很多使用位操作。

正如你所指出的,使用正態變數的作用域規則 如果語句塊內使用,它適用於所有的塊和子塊。無論你把它放在每個函式或全域性宣告它,它會影響你的整個計畫是非常個人的選擇。在全球更方便,但也增加了命名衝突的潛力。t可能有助於指出,由於一塊代替單個語句 即以分號結束 塊取代分號使用。沒有分號結束一塊是必要的。有更...

同時對多個檔案進行大量寫操作對效能優化

我自己的乙個專案,需要同時對65536個檔案進行多次寫操作。如果先全部開啟所有的檔案,然後重複寫,最後關閉所有的檔案。那麼第一次寫操作全部完成需要16分鐘左右,而第二次就需要40分鐘了。沒有繼續測試了。for int i 0 i 65536 i write write write for int i...