不得不說程式設計之美是一本很有意思的書,裡面的各式各樣新奇的問題,總是可以通過課上講的簡單的問題來解決,對於訓練自己的思維的確有很大的好處。一般解決複雜的問題,我們總是可以通過: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的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...