原创 第三部分 數據結構 第 10 章 基本數據結構

  數學中的集合是不變的,而由算法操作的集合卻在整個過程中能增大、縮小或發生其他變化,稱這樣的集合是動態的。   動態集合中的元素   在動態集合的典型實現中,每個元素都由一個對象來表示,如果有一個指向對象的指針,就能對其各個

原创 第 5 章 概率分析和隨機算法

  本章介紹概率分析和隨機算法. 5.1 僱用問題 概率分析   概率分析是在問題分析中應用概率的概念。大多數情況下,我們採用概率分析來分析一個算法的運行時間,有時也用來分析其他的量。我們對所有可能輸入產生的運行時間取平均。當報

原创 第 6 章 樹

樹(Tree)是 n(n>=0)個結點的有限集。n=0時,稱爲空樹。在任意一顆非空數中: (1)有且僅有一個特定的稱爲根的結點; (2)當n>1時,其餘結點可分爲m(m>0)個互不相交有限集T1、T2、...、Tm ,其中每一個集合本

原创 第 四 部分 高級設計分析技術 第15章 動態規劃

  這一部分介紹了設計和分析高效算法的三種重要技術:動態規劃、貪心算法、和攤還分析。   動態規劃通常用來解決最優化問題,在這類問題中,通過做出一組選擇來達到最優解。在做出每個選擇的同時,通常會生成與原問題形式相同的子問題。當多於一個選

原创 0-1 揹包問題——動態規劃

0-1揹包問題:  有N件商品和一個容量爲V的揹包。第 i 件商品的容量爲c[i],價值時w[i]。求解將那些物品裝入揹包可使這些物品的費用總和不超過揹包容量, 其價值總和最大。  問題特點:每種物品只有一件,可以選擇放或者不放。

原创 第5 章 串

串是有零個或多個字符組成的有限序列,又名字符串。 5.1 開場白 枯眼望遙山隔水,往來曾見幾心知?壺空怕酌一杯酒,筆下難成和韻詩。途路阻人離別久,訊音無雁寄回遲。孤燈夜守長廖寂,夫憶妻兮父憶兒。 5.2 串的定義 串是有零個或多個字符組成

原创 1 讓自己習慣C++

條款 01:視C++爲一個語言聯邦   今天的C++已經是一個多重範型編程語言,一個同時支持過程形式(procedural)、面向對象形式(object-oriented)、函數形式(functional)、泛型形式(generic)、元

原创 第 7 章 類

  類的實現包括類的數據成員,負責接口實現的函數體以及定義類所需的各種私有函數。    7.1 定義抽象數據類型 定義成員函數   成員函數的聲明必須在類的內部,它的定義既可以在類的內部也可以在類的外部。   作爲接口組成部分的非成

原创 2 構造/析構/賦值運算

幾乎每一個class都會有一或多個構造函數、一個析構函數、一個copy assignment操作符。本章提供的引導可讓你把這些函數良好地集結在一起,形成classes的脊柱。 條款 05: 瞭解C++默默編寫並調用哪些函數   什麼時候e

原创 第 16 章 貪心算法

  對於許多最優化問題,使用動態規劃算法來求最優解有些殺雞用牛刀了,可以使用更簡單、更高效的貪心算法。它在每一步都做出當時看起來最佳的選擇。也就是說,它總是做出局部最優的選擇,寄希望這樣的選擇能導致全局最優解。   貪心算法並不保證得到

原创 指針常量和常量指針

*象徵着地址,const象徵着內容;誰在前面誰就不允許改變。讀的時候:從右向左讀 int a =3; int b = 1; int c = 2; int const *p1 = &b;//const 在前,定義爲指向常量的指針

原创 整數轉換成字符串

http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html

原创 第 8 章 查找

查找:就是根據給定的某個值,在查找表中確定一個其關鍵字等於給定值的數據元素(或記錄)。 8.1 開場白 8.2 查找概論   查找表:是由同一類型的數據元素(或記錄)構成的集合。   關鍵字:是數據元素中某個數據項的值,又稱爲鍵值,用

原创 第 3 章 線性表

零個或多個數據元素的有限序列。 3.1 開場白 3.2 線性表的定義 線性表(list):零個或多個數據元素的有限序列。 在較複雜的線性表中,一個數據元素可以由若干個數據項組成。 3.3 線性表的抽象數據類型 線性表的抽象數據類型如下

原创 第 7 章 圖

7.1 開場白 7.2 圖的定義 圖(Graph)是有頂點的有窮非空集合和頂點之間邊的集合組成,通常表示爲:G(V,E),其中,G表示一個圖,V 是圖G中頂點的集合,E是圖G中邊的集合。 注:在定義中,若V是頂點的集合,則強調了頂點集合