計(jì)算機(jī)常用算法與程序設(shè)計(jì)案例教程

出版時(shí)間:2011-7  出版社:清華大學(xué)出版社  作者:楊克昌  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

  本書(shū)遵循“精選案例,面向設(shè)計(jì),深入淺出,注重能力培養(yǎng)”的要求,以“案例”形式實(shí)現(xiàn)“算法與程序設(shè)計(jì)”教學(xué)。本書(shū)精選枚舉、遞推、遞歸、回溯、動(dòng)態(tài)規(guī)劃、貪心算法與模擬等常用算法,精選各算法求解的典型案例,注重算法設(shè)計(jì)與程序?qū)崿F(xiàn),注重算法改進(jìn)與程序優(yōu)化,力求理論與實(shí)際相結(jié)合,算法與程序相統(tǒng)一。每一個(gè)案例求解,從案例提出、算法設(shè)計(jì)與描述,到程序?qū)崿F(xiàn)、運(yùn)行結(jié)果與討論,環(huán)環(huán)相扣,融為一體。
  本書(shū)所有案例求解給出詳細(xì)的算法描述與完整的c程序。每章最后附有習(xí)題,在附錄中給出習(xí)題求解提示,所有源程序可從清華大學(xué)出版社網(wǎng)站下載。
  本書(shū)可作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)“算法設(shè)計(jì)與分析”、“計(jì)算機(jī)程序設(shè)計(jì)”課程教材,也可供軟件設(shè)計(jì)人員與計(jì)算機(jī)愛(ài)好者學(xué)習(xí)參考。

書(shū)籍目錄

第1章 算法與程序設(shè)計(jì)概述
1.1 算法及其描述
1.1.1 算法定義
1.1.2 算法描述
1.2 算法的復(fù)雜性分析
1.2.1 時(shí)間復(fù)雜度
1.2.2 空間復(fù)雜度
1.3 算法與程序設(shè)計(jì)
1.3.1 算法與程序
1.3.2 結(jié)構(gòu)化程序設(shè)計(jì)
習(xí)題
第2章 枚舉
2.1 枚舉概述
2.2 統(tǒng)計(jì)與求和
2.2.1 指定特殊整數(shù)
2.2.2 最簡(jiǎn)真分?jǐn)?shù)
2.3 解方程
2.3.1 解佩爾方程
2.3.2 解超越方程
2.4 解不等式
2.4.1 分?jǐn)?shù)不等式
2.4.2 代數(shù)和不等式
2.5 求最值
2.5.1 基于素?cái)?shù)的代數(shù)和
2.5.2 整數(shù)的因數(shù)比
2.6 數(shù)組與數(shù)列
2.6.1 雙和數(shù)組
2.6.2 基于2x+3y的遞推數(shù)列
2.7 數(shù)式探求
2.7.1 逆序乘積式
2.7.2 完美綜合式
2.8 趣味數(shù)陣
2.8.1 素?cái)?shù)幻方
2.8.2 和積三角形
2.9 枚舉應(yīng)用小結(jié)
習(xí)題
第3章 遞推
3.1 遞推概述
3.1.1 遞推算法
3.1.2 遞推實(shí)施步驟與描述
3.2 遞推數(shù)列
3.2.1 擺動(dòng)數(shù)列
3.2.2 分?jǐn)?shù)數(shù)列
3.3 冪序列
3.3.1 雙冪序列
3.3.2 冪積序列
3.4 數(shù)陣探索
3.4.1 楊輝三角
3.4.2 折疊方陣
3.5 整數(shù)劃分問(wèn)題
3.5.1 整數(shù)劃分遞推設(shè)計(jì)
3.5.2 整數(shù)劃分遞推優(yōu)化
3.6 水手分椰子問(wèn)題
3.6.1 水手分椰子
3.6.2 n個(gè)水手分椰子
3.7 猴子爬山
3.7.1 簡(jiǎn)單案例的具體遞推
3.7.2 一般情形的分級(jí)遞推
3.8 遞推應(yīng)用小結(jié)
習(xí)題
第4章 遞歸
4.1 遞歸概述
4.2 排隊(duì)購(gòu)票
4.3 漢諾塔問(wèn)題
4.3.1 求移動(dòng)次數(shù)
4.3.2 展示移動(dòng)過(guò)程
4.4 旋轉(zhuǎn)數(shù)陣
4.4.1 雙轉(zhuǎn)向旋轉(zhuǎn)方陣
4.4.2 m行n列順轉(zhuǎn)矩陣
4.5 快速排序與選擇
4.5.1 快速排序
4.5.2 分區(qū)交換選擇
4.6 排列組合的實(shí)現(xiàn)
4.6.1 實(shí)現(xiàn)排列?a(n,m?)
4.6.2 實(shí)現(xiàn)組合?c(n,m?)
4.6.3 實(shí)現(xiàn)復(fù)雜排列
4.7 整數(shù)的拆分
4.7.1 拆分零數(shù)取自連續(xù)區(qū)間
4.7.2 拆分零數(shù)取自指定整數(shù)
4.8 遞歸應(yīng)用小結(jié)
習(xí)題
第5章 回溯法
5.1 回溯法概述
5.1.1 回溯的概念
5.1.2 回溯描述
5.2 橋本分?jǐn)?shù)式
5.2.1 橋本分?jǐn)?shù)式概述
5.2.2 10數(shù)字分?jǐn)?shù)式
5.3 直尺與串珠
5.3.1 古尺神奇
5.3.2 數(shù)碼串珠
5.4 逐位整除數(shù)探索
5.4.1 高逐位整除數(shù)
5.4.2 低逐位整除數(shù)
5.5 環(huán)序列
5.5.1 素?cái)?shù)和環(huán)
5.5.2 德布魯金環(huán)
5.6 裝錯(cuò)信封問(wèn)題
5.6.1 伯努利裝錯(cuò)信封問(wèn)題
5.6.2 特殊錯(cuò)位探索
5.7 別出心裁的情侶拍照
5.7.1 逐位安排與回溯
5.7.2 成對(duì)安排與回溯
5.8 回溯應(yīng)用小結(jié)
習(xí)題
第6章 動(dòng)態(tài)規(guī)劃
6.1 動(dòng)態(tài)規(guī)劃概述
6.1.1 動(dòng)態(tài)規(guī)劃的概念
6.1.2 動(dòng)態(tài)規(guī)劃實(shí)施步驟
6.2 最長(zhǎng)子序列探索
6.2.1 最長(zhǎng)非降子序列
6.2.2 最長(zhǎng)公共子序列
6.3 最優(yōu)路徑搜索
6.3.1 點(diǎn)數(shù)值三角形的最優(yōu)路徑
6.3.2 邊數(shù)值矩形的最優(yōu)路徑
6.4 裝載問(wèn)題
6.5 0-1背包問(wèn)題
6.5.1 一般0-1背包問(wèn)題
6.5.2 二維約束0-1背包問(wèn)題
6.6 插入乘號(hào)問(wèn)題
6.6.1 動(dòng)態(tài)規(guī)劃求解
6.6.2 基于組合枚舉求解
6.7 動(dòng)態(tài)規(guī)劃應(yīng)用小結(jié)
習(xí)題
第7章 貪心算法
7.1 貪心算法概述
7.2 刪數(shù)字問(wèn)題
7.3 埃及分?jǐn)?shù)式
7.3.1 選擇最小分母構(gòu)建
7.3.2 貪心選擇范圍的擴(kuò)展
7.4 可拆背包問(wèn)題
7.5 數(shù)列操作與極差
7.5.1 數(shù)列操作
7.5.2 數(shù)列操作優(yōu)化
7.5.3 數(shù)列極差
7.6 哈夫曼樹(shù)及其應(yīng)用
7.6.1 哈夫曼樹(shù)
7.6.2 哈夫曼編碼
7.7 貪心算法應(yīng)用小結(jié)
習(xí)題
第8章 模擬
8.1 豎式乘除模擬
8.1.1 豎式除模擬
8.1.2 豎式乘模擬
8.2 乘數(shù)探求
8.2.1 積為若干個(gè)1構(gòu)成
8.2.2 積為若干個(gè)2011構(gòu)成
8.2.3 積的任意指定構(gòu)成
8.3 尾數(shù)前移問(wèn)題
8.3.1 限1位尾數(shù)前移
8.3.2 多位尾數(shù)前移
8.4 階乘冪與排列組合數(shù)的計(jì)算
8.5 圓周率π的高精度計(jì)算
8.6 蒙特卡羅模擬計(jì)算
8.7 模擬發(fā)橋牌
8.8 泊松分酒
8.9 模擬應(yīng)用小結(jié)
習(xí)題
第9章 算法的綜合應(yīng)用
9.1 最大子段和問(wèn)題
9.1.1 序列的最大子段和
9.1.2 環(huán)序列的最大子段和
9.2 高斯皇后問(wèn)題
9.2.1 高斯八皇后問(wèn)題
9.2.2 n皇后問(wèn)題
9.2.3 皇后全控棋盤(pán)問(wèn)題
9.3 馬步遍歷與哈密頓圈
9.3.1 馬步遍歷
9.3.2 馬步型哈密頓圈
9.3.3 組合型哈密頓圈
9.4 算法的綜合應(yīng)用小結(jié)
習(xí)題
附錄
附錄a 部分習(xí)題求解提要
附錄b 在vc++6.0環(huán)境下運(yùn)行c程序方法簡(jiǎn)介
附錄c c常用庫(kù)函數(shù)
參考文獻(xiàn)

章節(jié)摘錄

版權(quán)頁(yè):插圖:從以上兩個(gè)例中可見(jiàn),在求解案例時(shí),需根據(jù)問(wèn)題的具體實(shí)際設(shè)置數(shù)據(jù)結(jié)構(gòu),確定求解算法,編程實(shí)現(xiàn)算法。要提高程序的質(zhì)量,提高編程效率,主要是使設(shè)計(jì)的算法具有良好的可讀性、可靠性、可維護(hù)性以及良好的結(jié)構(gòu)。設(shè)計(jì)好的算法,編制好的程序,應(yīng)當(dāng)是每位程序設(shè)計(jì)工作者追求的目標(biāo)。而要做到這一點(diǎn),就必須掌握正確的程序設(shè)計(jì)方法與技術(shù)。實(shí)際上,算法設(shè)計(jì)與程序設(shè)計(jì)是相關(guān)聯(lián)的一個(gè)整體。為了防止在算法教學(xué)中算法設(shè)計(jì)與程序設(shè)計(jì)脫節(jié),算法理論與實(shí)際應(yīng)用脫節(jié),本教程在講述每一種常用算法時(shí),把算法設(shè)計(jì)與程序設(shè)計(jì)緊密結(jié)合起來(lái),突出算法在解決實(shí)際案例中的核心地位與指導(dǎo)作用,努力提高對(duì)相應(yīng)算法的理解,切實(shí)提高我們應(yīng)用算法設(shè)計(jì)解決實(shí)際問(wèn)題的能力。1.3.2 結(jié)構(gòu)化程序設(shè)計(jì)近年來(lái),一些面向?qū)ο蟮挠?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言陸續(xù)問(wèn)世,打破了以往只有面向過(guò)程程序設(shè)計(jì)的單一局面。如果認(rèn)為有了面向?qū)ο蟮某绦蛟O(shè)計(jì)之后,面向過(guò)程的程序設(shè)計(jì)就過(guò)時(shí)了,這是不正確的。不應(yīng)該把面向?qū)ο笈c面向過(guò)程對(duì)立起來(lái),在面向?qū)ο蟪绦蛟O(shè)計(jì)中仍然要用到面向過(guò)程的知識(shí)。面向過(guò)程程序設(shè)計(jì)仍然是程序設(shè)計(jì)工作者的基本功。而面向過(guò)程程序設(shè)計(jì)通常由結(jié)構(gòu)化程序設(shè)計(jì)實(shí)現(xiàn)。算法是由一系列操作組成的,這些操作之間的執(zhí)行次序就是控制結(jié)構(gòu)。計(jì)算機(jī)科學(xué)家Bohm和Jacopini證明了這樣的事實(shí):任何簡(jiǎn)單或復(fù)雜的算法都可以由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組合而成。所以,順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)被稱為程序設(shè)計(jì)的三種基本構(gòu),也是結(jié)構(gòu)化程序設(shè)計(jì)必須采用的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法是目前國(guó)內(nèi)外普遍采用的一種程序設(shè)計(jì)方法。自20世紀(jì)60年代由荷蘭學(xué)者E.w.Dijkstra提出后,結(jié)構(gòu)化程序設(shè)計(jì)方法在實(shí)踐中不斷發(fā)展和完善,已成為軟件開(kāi)發(fā)的重要方法,在程序設(shè)計(jì)中占有十分重要的位置。結(jié)構(gòu)化程序設(shè)計(jì)是一種進(jìn)行程序設(shè)計(jì)的原則和方法,按照這種原則和方法可設(shè)計(jì)出結(jié)構(gòu)清晰、容易理解、容易修改、容易驗(yàn)證的程序?;蛘哒f(shuō),結(jié)構(gòu)化程序設(shè)計(jì)是按照一定的原則與原理,組織和編寫(xiě)正確且易讀的程序的軟件技術(shù)。結(jié)構(gòu)化程序設(shè)計(jì)的目標(biāo)在于使程序具有一個(gè)合理結(jié)構(gòu),以保證程序的正確性,從而開(kāi)發(fā)出正確、合理的程序。結(jié)構(gòu)化程序設(shè)計(jì)的基本要點(diǎn)為:(1)自頂向下,逐步求精。(2)模塊化設(shè)計(jì)。(3)結(jié)構(gòu)化編碼。自頂向下是指對(duì)設(shè)計(jì)求解的問(wèn)題要有一個(gè)全面的理解,從問(wèn)題的全局入手,把一個(gè)復(fù)雜問(wèn)題分解成若干個(gè)相互獨(dú)立的子問(wèn)題,然后對(duì)每個(gè)子問(wèn)題再作進(jìn)一步的分解,如此重復(fù),直到每個(gè)子問(wèn)題都解決為止。

編輯推薦

《計(jì)算機(jī)常用算法與程序設(shè)計(jì)案例教程》:首創(chuàng)“案例”形式實(shí)現(xiàn)算法與程序設(shè)計(jì)教學(xué)。通過(guò)典型案例來(lái)引導(dǎo)算法設(shè)計(jì)的逐步深入,來(lái)展開(kāi)程序設(shè)計(jì)的求解實(shí)施,實(shí)現(xiàn)以典型案例支撐算法,以算法設(shè)計(jì)指導(dǎo)案例求解的良性循環(huán)。注重常用算法的選取與組織。在常用算法的選取上克服貪多求全、貪廣求深,去除一些難度大、理論深、應(yīng)用少的帶學(xué)術(shù)研究性質(zhì)的算法內(nèi)容,結(jié)合本科教學(xué)實(shí)際與應(yīng)用需求,選取枚舉、遞推、遞歸、回溯、動(dòng)態(tài)規(guī)劃、貪心算法與模擬等常用算法。注重典型案例的精選與提煉。針對(duì)選取的每一種常用算法,精選典型的實(shí)際案例,包括典型的數(shù)值求解,常見(jiàn)的數(shù)據(jù)處理,有趣的智力測(cè)試,巧妙的模擬探索,既有引導(dǎo)入門(mén)的基礎(chǔ)案例,也有難度較大的綜合案例,既有新創(chuàng)趣題,也有經(jīng)典名題,難度適宜,深入淺出。注重算法設(shè)計(jì)與程序?qū)崿F(xiàn)的緊密結(jié)合。在講述每一種常用算法的基本思路與設(shè)計(jì)步驟的基礎(chǔ)上,落實(shí)到每一個(gè)案例求解,從案例的提出到算法設(shè)計(jì)與描述、從程序?qū)崿F(xiàn)到案例結(jié)果的討論與分析,環(huán)環(huán)相扣,融為一體,力求理論與實(shí)際相結(jié)合、算法與程序相統(tǒng)一,突出算法在解決實(shí)際案例中的核心地位與引導(dǎo)作用,切實(shí)提高對(duì)所學(xué)算法的理解和掌握。注重算法改進(jìn)與程序優(yōu)化。教程對(duì)一些典型案例應(yīng)用多種不同的算法設(shè)計(jì),編寫(xiě)不同表現(xiàn)形式與不同設(shè)計(jì)風(fēng)格的程序,體現(xiàn)了算法與程序設(shè)計(jì)的靈活性和多樣性。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    計(jì)算機(jī)常用算法與程序設(shè)計(jì)案例教程 PDF格式下載


用戶評(píng)論 (總計(jì)11條)

 
 

  •   本書(shū)編得很不錯(cuò),里面還有案例等讓人更容易理解,不錯(cuò),好評(píng)。
  •   適用于計(jì)算機(jī)愛(ài)好者
  •   沒(méi)看到書(shū),給妹妹買(mǎi)的,直接寄到學(xué)校去了,速度那是相當(dāng)快啊,晚上下的單第二天就到了,妹妹還想著周一上課要用,結(jié)果周六就到了,書(shū)不錯(cuò),跟她們教師說(shuō)的是同一版本,以后教材就在這買(mǎi)了
  •   如果十二個(gè)
  •   湖南理工的老師能寫(xiě)出這樣的書(shū) 可喜可賀
  •   內(nèi)容詳細(xì)。思路方法很好,很全面
  •   一些常用的算法,算法入門(mén)必備
  •   主要是代碼不夠規(guī)范,顯得很亂。
  •   還不錯(cuò)哦 ,個(gè)人覺(jué)得?。?/li>
  •   不錯(cuò)的書(shū)籍,很多基礎(chǔ)算法,不過(guò)缺少數(shù)據(jù)結(jié)構(gòu)方面的內(nèi)容,而且相對(duì)與競(jìng)賽來(lái)說(shuō)偏簡(jiǎn)單了些
  •   比較實(shí)用,易懂,比一般的只有算法的羅列要強(qiáng),更有系統(tǒng)。
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7