原创 【插入排序】直接插入排序

直接插入排序(Straight Insertion Sort)[算法思想] 1)設待排序的記錄存放在數組r[1..n]中,r[1]是一個有序序列. 2)循環n-1次,每次使用順序查找法,查找r[i](i=2, ... ,n)在已排好序的序

原创 【藍橋第三週】老鼠走迷宮

老鼠走迷宮 問題描述 老鼠走迷宮是遞迴求解的基本題型, 試以程式求出由入口至出口的路徑,入口爲左上角,出口爲右下角。 迷宮圖7×7 牆的表示:█ 路徑的表示:◇INPUT (無)OUTPUT 顯示迷宮: 顯示路徑: 解法一 [解題思

原创 【散列表】哈希表

散列表(hash table)          散列表,也叫哈希表,是實現字典操作的一種有效數據結構。儘管最壞情況下,散列表中查找一個元素的時間與鏈表中查找的時間相同,達到O(n),然而實際應用中,散列查找的性能是極好的。在一些合理的假

原创 【選擇排序】簡單選擇排序

      選擇排序的基本思想是:每一趟從待排序的記錄選出關鍵字最小的記錄,按順序放在已排序的記錄序列的最後,直到全部排完爲止。   簡單選擇排序(Simple Selection Sort)也稱作直接選擇排序。[算法思想] 1)設待排序

原创 鏈表的基本功能實現

 前言  :  鏈表的實現,查詢,插入,刪除,這些簡單的操作。在平時的學習中,經常會遇見,故以單鏈表爲例做個總結。鏈表的優缺點,以及適用情況在前面的一篇文中就提到過,就不作介紹了。 一、鏈表的定義 單鏈表存儲結構 typedef str

原创 next_permutation(全排列算法)

       STL提供了兩個用來計算排列組合關係的算法,分別是next_permutation和prev_permutation。首先我們必須瞭解什麼是“下一個”排列組合,什麼是“前一個”排列組合。考慮三個字符所組成的序列{a,b,c}

原创 【藍橋第一週】計數的夢

RQNOJ PID11 / 計數的夢 題目描述       Bessie 處於半夢半醒的狀態。過了一會兒,她意識到她好像在數羊,不能入睡。Bessie的大腦反應靈敏,彷彿真實地看到了她數過的一個又一個數。她開始注意每一個數碼:每一個數碼在

原创 1014 裝箱問題

1014 裝箱問題  2001年NOIP全國聯賽普及組  時間限制: 1 s   空間限制: 128000 KB   題目等級 : 黃金 Gold 題目描述 Description     有一個箱子容量爲V(正整數,0<=V<=2000

原创 數組與鏈表的區別

一、數組      數組,即線性表的順序表示,指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,其特點是邏輯上相 鄰的數據元素,其物理次序也是相鄰的。 假設線性表的每個元素需佔用k個存儲單元,並以所佔的第一個單元的存儲地址作爲數據元

原创 【插入排序】希爾排序

希爾排序(Shell’s Sort)   希爾排序又稱“縮小增量排序”(Diminishing Incerment Sort),是插入排序的一種,因D.L.Shell於1959年提出而得名。直接插入排序當待排序的記錄個數較少且待排序序列的

原创 【交換排序】冒泡排序

冒泡排序(Bubble Sort)     冒泡排序是基於交換排序的一種排序,交換排序的基本思想,是兩兩比較待排序記錄的關鍵字,一旦發現兩個記錄不滿足次序要求時則進行交換,直到整個序列全部滿足要求爲止。冒泡排序是一種最簡單的交換排序方法,

原创 STL-泛型算法(前篇)

泛型算法(generic algorithm)      前言:在網上找了一堆C++泛型算法的資料,總感覺看起來很沒有條理,於是乎搬出書架上的<C++ Primer 5th>.重溫並且全面的總結一下知識點. 來自<C++ Primer>第

原创 常用類型的取值範圍

  以vs2012(編譯器)裏的定義,對一些常用類型的取值範圍做個小結。 int類型 #define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ #

原创 【基數排序】

基數排序(Radix Sorting)  基數排序是和前面所述各類排序方法完全不相同的一種排序方法。前述各類排序方法都是建立在關鍵字比較的基礎上,而基數排序不比較關鍵字的大小,它是根據關鍵字中各位的值,通過對待排序記錄進行若干趟“分配”與

原创 【藍橋第一週】最少硬幣問題

最少硬幣問題 問題描述    設有n 種不同面值的硬幣,各硬幣的面值存於數組T[1:n]中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於數組Coins[1:n]中。對任意錢數0≤m≤20001,設計一個用最少硬幣找錢m的方