原创 [容易] 最短路實例(有條件的最短路)

九度oj 1162 題目描述:     The country is facing a terrible civil war----cities in the country are divided into two parts su

原创 [中等] 比較完整的BigInteger高精度整數類(C++實現)

       首先有讀者可能覺得寫一個高精度整數不是必備技能嗎,怎麼還算中等難度,應該算容易啊。我之所以將其劃爲中等難度,是因爲確實本身寫一個高精度整數是必備技能,而且其思想基本就是手算的思想,思想並不難,但是要想寫一個比較完整而且沒有錯

原创 [容易] bfs狀態搜索

九度oj1457 題目描述: 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認爲。因爲每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyo

原创 [容易] BFS求最短路(迷宮類問題)

題目描述: Ignatius被魔王抓走了,有一天魔王出差去了,這可是Ignatius逃亡的好機會.魔王住在一個城堡裏,城堡是一個A*B*C的立方體,可以被表示成A個B*C的矩陣,剛開始Ignatius被關在(0,0,0)的位置,離開城堡

原创 [容易] UVa OJ 10562 看圖寫樹

題目描述 具體代碼 #include <iostream> #include <string> using namespace std; const int maxn=200+5; string tree[maxn]; void dfs

原创 [容易] DAG的拓撲排序

DAG的拓撲排序可以採用兩種方法來求解:入度法和DFS DFS比較好寫,而且不需要掌握額外的算法,不過處理起實際問題來,DFS法不如入度法方便,因此在這裏我推薦大家採用入度法來求拓撲排序。 這裏先給出一個入度法的例子,後面會給出一個DFS

原创 [容易] 並查集的優雅實現(實例:求無向圖最大連通塊結點數)

題目描述: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come,

原创 [容易] kruskal 算法並查集實現

題目描述:     In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back to form a pi

原创 [容易] 遞歸的應用:改進的漢諾塔

題目描述: 約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根杆,最左邊的杆上自上而下、由小到大順序串着由64個圓盤構成的塔。目的是將最左邊杆上的盤全部移到右邊的杆上,條件是一次只能移動一個盤,且不允許大盤放在小盤的上面。

原创 [難度:容易] 先根和中根構建二叉樹

題目描述 具體代碼 #include <iostream> #include <string> using namespace std; struct Node { char data; Node* left,*rig

原创 [容易] priority_queue版Huffman

1.問題描述 問題描述 在一個果園裏,小明已經將所有的水果打了下來,並按水果的不同種類分成了若干堆,小明決定把所有的水果合成一堆。每一次合併,小明可以把兩堆水果合併到一起,消耗的體力等於兩堆水果的重量之和。當然經過 n‐1 次合併之

原创 [中等] 堆優化的Dijkstra實現

題目描述: 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。 輸入: 輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d

原创 [中等] 動態規劃經典-堆石子問題

1. 問題描述: 設有N堆沙子排成一排,其編號爲1,2,3,…,N(N<=100)。每堆沙子有一定的數量。現要將N堆沙子併成爲一堆。歸併的過程只能每次將相鄰的兩堆沙子堆成一堆,這樣經過N-1次歸併後成爲一堆。找出一種合理的歸併方法,使總

原创 [中等] UVa OJ 10603 Fill BFS狀態搜索

題目描述 思路: 其實這道題和我之前寫的一篇文章中的題目類似,不過那道題題意比較簡單,只需要簡單的BFS狀態搜索就可以,本題的題意就要複雜一些了,編碼也發生了一些變化,因此將其歸爲中等題目。 要說思路,首先看完題,就知道這是個BFS狀態搜

原创 [中等] UVa OJ 11400 Lighting system design 動態規劃

題目描述 基本思路:(類比最長上升子序列LIS問題) 首先,對於每種電源的燈泡要麼全換,要麼不換,因爲不能將大電壓的燈泡換成小電壓的,因此先將燈泡按電壓大小排序,排完序後,就是一個考慮第i種燈泡換不換的問題了,是個多階段決策問題,因此考慮