原创 算法筆記---合併果子(堆)

題目描述 在一個果園裏,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。 每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n-1次

原创 算法筆記---好朋友

題目描述 有一個叫作“數碼世界”的奇異空間,在數碼世界裏生活着許許多多的數碼寶貝,其中有些數碼寶貝之間可能是好朋友。並且數碼世界有兩條不成文的規定: 第一,數碼寶貝A和數碼寶貝B是好朋友等價於數碼寶貝B和數碼寶貝A是好朋友。 第二

原创 算法筆記---並查集

並查集是一種維護集合的數據結構,它的名字中“並”“查”“集”分別取自Union(合併)、Find(查找)、Set(集合)這3個單詞。也就是說,並查集支持下面兩個操作: ①合併:合併兩個集合。 ②查找:判斷兩個元素是否在一個集合。

原创 算法筆記---二叉查找樹的性質

題目描述 給出N個正整數來作爲一棵二叉排序樹的結點插入順序,問:這串序列是否是該二叉排序樹的先序序列或是該二叉排序樹的鏡像樹的先序序列。所謂鏡像樹是指交換二叉樹的所有結點的左右子樹而形成的樹(也即左子樹所有結點數據域大於或等於根結

原创 算法筆記---構造二叉樹

題目描述 給出一棵二叉樹的後序遍歷序列和中序遍歷序列,求這棵二叉樹的層序遍歷序列。 輸入樣例: 中序:{1,2,3,4,5,6,7}; 後序:{2,3,1,5,7,6,4}; 輸出樣例: 層序:{4,1,6,3,5,7,2};

原创 算法筆記---用棧計算表達式

題目描述 讀入一個只包含+,-,x,/,(,)的非負整數計算表達式,計算該表達式的值 輸入格式 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字符,整數和運算符之間用一個空格分隔。 沒有非法表達式。當一行中只有0

原创 算法筆記---平衡二叉樹(AVL)

平衡二叉樹由前蘇聯兩位數學家GM.Adelse-Velskil和E.M.Landis提出,因此一般也稱作AVL樹。 AVL樹仍然是一棵二叉查找樹,只是在其基礎上增加了“平衡”的要求。所謂平衡是指,對AVL樹的任意結點來說,其左子樹

原创 算法筆記---揹包問題

題目描述 有n件物品,每件物品的重量爲w[i],價值爲c[i]。現在需要選出若干件物品放入一個容量爲V的揹包中,使得在選入揹包的物品重量和不超過容量V的前提下,讓揹包中物品的價值之和最大,求最大價值。(1≤n≤20) 輸入數據 5

原创 算法筆記---從N個整數中選取K個數的最優方案

題目描述 給定N個整數(可能有負數),從中選擇K個數,使得這K個數之和恰好等於一個給定的整數X;如果有多種方案,選擇它們中元素平方和最大的一個。數據保證這樣的方案唯一。例如,從4個整數(2,3,3,4}中選擇2個數,使它們的和爲6

原创 算法筆記---大整數

題目描述 對一道A+B的題目,如果A和B的範圍在int範圍內,那麼相信大家很快就能寫出程序。但是如果A和B是有着1000個數位的整數,恐怕就沒有辦法用已有的數據類型來表示了,這時就只能老實去模擬加減乘除的過程。 解題思路: 使用數

原创 算法筆記---求n!中有多少個質因子p && 組合數

題目描述 n!表示n的階乘,並且有n!=1×2x…×n成立。求n!中有多少個質因子p。 這個問題是什麼意思呢?舉個例子,6!=1×2×3×4×5×6,於是6!中有4個質因子2,因爲2、4、6中各有1個2、2個2、1個2;而6!中有

原创 操作系統---銀行家算法

銀行家算法(避免死鎖): 死鎖:如何避免死鎖 ​如果一組進程中的每一個進程都在等待僅由該組進程中的其他進程才能引發的事件,那仫該組進程就是死鎖的。 產生死鎖的必要條件: 互斥條件:一個資源每次只能被一個線程使用。 請求與保持條件

原创 操作系統---PV操作

1.PV原語的含義 P操作和V操作是不可中斷的程序段,稱爲原語。PV原語及信號量的概念都是由荷蘭科學家E.W.Dijkstra提出的, 其基本思路是用一種新的變量類型(semaphore)來記錄當前可用資源的數量。信號量sem是一

原创 操作系統---文件的空閒管理

文件存儲空間的管理 實質上是一個空閒塊的組織和管理問題,它包括空閒塊組織,空閒塊的分配和空閒塊的回收等幾個問題。 空閒區表法   空閒表法屬於連續分配方式。它與內存管理中的動態分區分配方式相似。   將外存空間上一個連續未分配

原创 算法筆記---D進制的A+B

題目描述 輸入兩個非負十進制整數A和B (<=2^30 - 1)以及D(進制數),輸出A+B的D(1<=D<=10)進制數 輸入格式: 在一行中依次給出三個整數A、B和D(進制數) 輸出格式: A+B的D進制數 樣例: 輸入: