讀書筆記 程式設計之美(一

2021-08-18 07:35:27 字數 1741 閱讀 4634

不得不說程式設計之美是一本很有意思的書,裡面的各式各樣新奇的問題,總是可以通過課上講的簡單的問題來解決,對於訓練自己的思維的確有很大的好處。一般解決複雜的問題,我們總是可以通過:1、畫圖:鍊錶、二叉樹,2、舉例,3、分解:分治法、動態規劃來解決。

for(;;)

遍歷a的位置

遍歷b的位置

判斷a、b的位置組合是否滿足要求。如果滿足,則輸出。

byte i = 81;

while(i--)

for(int i = 1;i

< m_ncakecnt; i++)

f(y1,y2,y3,y4,y5)

= 0 if(y1=y2=y3=y4=y5=0)

= min

//得到第一層的

for(n1 = 0; n2 = nperson[1], n3 = 0, i = 2; i <= n; i++)

for(i = 2; i <= n; i++)

else

break;

}

(待續)

an = [a * n], bn = [b * n],

a = (1 + sqrt[5]) / 2,

b = (1 + sqrt[5]) / 2

可以判斷x(x <= y)是否等於[a] * (y - x)來判斷< x,y >是否為乙個不安全局面。

問題:

- 1.怎樣用簡單的計算機模型來描述這個問題?

- 2.怎麼判斷兩個圖形能否相消?

- 3.怎樣求出相同圖形之間的最短路徑**彎數最少,路徑經過的格仔數目最小)?

- 4.怎樣確定死鎖狀態,如何設計演算法來解除死鎖?

思路:

- 1.自動機模型

生成遊戲初始局面

grid preclick = null, curclick = null;

while(遊戲沒有結束)

if(preclick != null && curclick != null

&& preclick.pic == curclick.pic

&& findpath(preclick, curclick) != null)

}

if((mincrossing(x) + 1

< mincrossing(y)

|| ((mindistance(x) + 1 == mincrossing(y))

&& (mindistance(x) + dist(x,y) < mindistance(y))))

if(array.length < 2)

foreach(從陣列中任取兩個數的組合)

}

(2)分治法,去冗餘,有點像動態規劃。

問題:

思路:

while(offsety < n - maxrow)

offsety++;

flag = 0

for i = 0to3

for j = 0to3

if (y > min(di - maxrowi)) //計算每一列觸底高度的最小值

flag = 1

《程式設計之美》讀書筆記(一)

2.1求二進位制數中1的個數 乙個8byte的整數,求其二進位制表示中1的個數。四個演算法 1 迴圈除2判斷餘數是否為1 2 和0x01異與 判斷最後一位是否為1,然後右移一位,迴圈往復。演算法1和2的時間複雜度都是o logn 3 這個演算法比較狠,乙個乙個抹去最後乙個1,這樣時間複雜度就只和1的...

《程式設計之美》讀書筆記

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

《程式設計之美》讀書筆記集錦

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...