原创 算法-2B

算法-2B 接之前的算法-2A,後的第四次大課 分而治之——1 在學完簡單數據結構,貪心算法,減而治之後,我們來到了我們的分而治之章,這是算法裏同樣很重要的一個章節。 這是分而治之的一個簡單演示圖,把一個規模爲n的問題,分爲兩個

原创 算法-3B

算法-3B 這章的重點在於動態規劃。而動態規劃和分而治之的很大區別就在於,分而治之我們是不想分出來的子問題有聯繫的,但如果實在子問題之間具有聯繫,我們一般用動態規劃來解決。當然動態規劃也不是萬能的。動態規劃的兩個好處1,可以解決很

原创 算法-1A

算法-1A 博主有幸曾參加過清華鄧俊輝老師的算法訓練營第二期,花費了3000大洋,聽取了鄧老師的十節課,鄧老師在中國數據結構與算法屆還是相當有能力,培養出很多拿世界級賽事大獎的學生。但當時正值暑假,博主意志力薄弱,未能跟着五週的高

原创 算法-1B

續算法-1A後第二節課 貪心(2)-1 上次鄧老師講了一些基本數據結構和貪心思維,這次課主要還是貪心,但提出了很多新的算法及數據結構和解決方案。 這是二叉搜索樹,在我們要在一個集合裏面找到我們想要的那個元素,遍歷一遍無疑是最簡單

原创 c語言如何輸入輸出string類型

一般C語言中輸入字符串要麼使用字符數組, 要麼使用字符指針;但有時在C++中用到string類型,而爲了節省程序運行過時間經常使用c中的標準輸入輸出scanf() 和 printf() ,但是c中沒有string類型, 那麼怎樣輸

原创 算法-2A

算法-2A 接之前的算法-1A,1B後的第三次大課 減而治之——1 這節課鄧老師主要講解了Decrease-and-conquer的概念,也就是減而治之,注意這裏的減是減除的減,而不是簡化的簡,意味着把一個問題減去一部分後,得到

原创 旅遊規劃

7-6 旅遊規劃 (25 分) 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫一個程序,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜

原创 Dijkstra算法

7-14 Dijkstra算法(模板) (30 分) 給一個n(1 ≤ n ≤ 2500) 個點 m(1 ≤ m ≤ 6200) 條邊的無向圖,求 s 到 t 的最短路。 輸入格式: 第一行四個由空格隔開的整數 n、m、s、t。 之後

原创 列出連通集

7-15 列出連通集 (25 分) 給定一個有N個頂點和E條邊的無向圖,請用DFS和BFS分別列出其所有的連通集。假設頂點從0到N−1編號。進行搜索時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。 輸入格式: 輸入第

原创 頂點的度

7-12 頂點的度 (20 分) 頂點的圖。給定一個有向圖,輸出各頂點的出度和入度。 輸入格式: 輸入文件中包含多個測試數據,每個測試數據描述了一個無權有向圖。每個測試數據的第一行爲兩個正整數n 和m,1 ≤ n ≤ 100,1 ≤

原创 前序序列創建二叉樹

7-9 前序序列創建二叉樹 (25 分) 編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據此字符串建立一個二叉樹(以二叉鏈表存儲)。 例如如下的先序遍歷字符串: ABC##DE#G##F### 其中“#”表示的是空格,代表一棵空樹。

原创 並查集【模板】

7-13 並查集【模板】 (30 分) 給出一個並查集,請完成合並和查詢操作。 輸入格式: 第一行包含兩個整數N、M,表示共有N個元素和M個操作。 接下來M行,每行包含三個整數Z​i​​、X​i​​、Y​i​​。 當Z​i​​=1時,

原创 玩轉二叉樹

7-3 玩轉二叉樹 (25 分) 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裏假設鍵值都是互不相等的正整數。 輸入格式: 輸入第一行給出

原创 重建二叉樹

7-10 重建二叉樹 (25 分) 給定一棵二叉樹的前序遍歷和中序遍歷的結果,求其後序遍歷。 輸入格式: 輸入可能有多組,以EOF結束。 每組輸入包含兩個字符串,分別爲樹的前序遍歷和中序遍歷。每個字符串中只包含字母和數字且互不重複。

原创 根據後序和中序遍歷輸出先序遍歷

7-2 根據後序和中序遍歷輸出先序遍歷 (25 分) 本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。 輸入格式: 第一行給出正整數N(≤30),是樹中結點的個數。隨後兩行,每行給出N個整數,分別對應後序