| |
定 價:69 元
叢書名:高等院校信息技術(shù)系列教材
當前圖書已被 29 所學校薦購過!
查看明細
- 作者:楊克昌
- 出版時間:2024/1/1
- ISBN:9787302652847
- 出 版 社:清華大學出版社
- 中圖法分類:TP301.6;TP311.1
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開

本書遵循精選案例,面向設計,深入淺出,注重能力培養(yǎng)的宗旨,以案例形式實現(xiàn)算法與程序設計教學。本書選取枚舉、遞推、遞歸、回溯、動態(tài)規(guī)劃、貪心算法、分支限界法與模擬等常用算法,并精選應用各算法設計求解的典型案例。書中每個案例求解,從案例提出到算法設計與程序?qū)崿F(xiàn),從案例結(jié)果顯示到算法改進與程序優(yōu)化,環(huán)環(huán)相扣,融為一體,力求算法理論與實際應用相結(jié)合、算法與程序相統(tǒng)一,突出算法在解決實際案例中的核心地位與引導作用。 書中所有案例求解均給出詳細的算法設計提要與完整的C程序清單,所有程序均在VC 6.0編譯通過,所有源代碼均可從指定網(wǎng)站下載。 本書可作為高等院校計算機及相關(guān)專業(yè)算法設計與分析程序設計基礎與應用等課程的教材,也可供各類計算機程序設計競賽與計算機編程培訓參考。
(1)首創(chuàng)案例形式實現(xiàn)算法與程序設計教學。通過實際案例的求解見證算法設計的神奇與功效,實現(xiàn)以典型案例支撐算法設計,以算法設計指導案例求解的良性循環(huán)。 (2)注重常用算法的選取與組織。 在常用算法的選取上克服貪多求全、貪廣求深,去除若干難度大、理論深、少有應用的算法羅列,結(jié)合本科教學目標與應用實際,選取常用算法。 (3)注重典型案例的精選與提煉。 針對選取的每一種常用算法,精選典型的實際應用案例。 (4)注重算法設計與程序?qū)崿F(xiàn)的緊密結(jié)合。本教程對每一 種常用算法的設計規(guī)范,具體落實到實際案例求解的各個環(huán)節(jié):有算法設計提要、有程序?qū)?現(xiàn)清單,有運行示例顯示,有算法改進與程序優(yōu)化,環(huán)環(huán)相扣,融為一體。 (5)注重算法改進與程序優(yōu)化。 教程對一些典型案例應用多種不同的算法設計,編寫不同表現(xiàn)形式與設計風格的程序, 充分體現(xiàn)了算法與程序設計的靈活性和多樣性。
計算機常用算法與程序設計案例教程(第3版)前言前言 計算機算法與程序設計是計算機科學與技術(shù)的核心內(nèi)容,是大學計算機相關(guān)專業(yè)的重要專業(yè)基礎課。通過對現(xiàn)有計算機專業(yè)算法設計與分析教學的調(diào)研分析,很多同學對學過的算法思路不明了,描述不清楚,設計不到位,無法應用算法設計程序解決一些常見的實際問題。造成這一局面的重要原因之一是缺少適合計算機本科層次的算法與程序設計教材。 一般現(xiàn)有算法設計與分析教材在算法選取上貪多求全、貪廣求深,混雜一些難度大、理論深、少有應用的算法羅列。同時,在講授算法時存在對算法的抽象描述多,應用算法設計解決實際問題少等偏差,造成算法與程序設計脫節(jié),算法理論與實際應用脫節(jié),不利于學生應用算法與程序設計解決實際問題能力的提高。 為此,我們對《計算機程序設計經(jīng)典題解》(清華大學出版社, 2007)、《至美C程序設計》(中國水利水電出版社,2016)與《計算機常用算法與程序設計教程》(第2版, 人民郵電出版社, 2017)等進行優(yōu)化整合,推出適合本科算法與程序設計教學實際的案例教程。 本書遵循精選案例,面向設計,深入淺出,注重能力培養(yǎng)的宗旨,在常用算法典型案例的選取與深度的把握上,在算法理論與案例求解的結(jié)合上進行精心設計,力圖適合高校計算機本科教學目標與知識結(jié)構(gòu)的要求。本書具有以下5個特色。 1. 首創(chuàng)案例形式實現(xiàn)算法與程序設計教學 學習算法與程序設計是為了培養(yǎng)提高學生應用算法與程序設計解決實際問題的能力,算法與程序設計課程教學無疑是最適宜以案例形式來實現(xiàn)的。通過實際案例的求解見證算法設計的神奇與功效,實現(xiàn)以典型案例支撐算法設計,以算法設計指導案例求解的良性循環(huán)。 采用案例形式實現(xiàn)算法與程序設計教學在全國屬首創(chuàng)。對每個案例求解,從案例提出到算法設計、從程序?qū)崿F(xiàn)到顯示運行結(jié)果,從算法分析到程序設計優(yōu)化,環(huán)環(huán)相扣,融為一體,讓學生看得見、摸得著、學得會、用得上,從而收到立竿見影、舉一反三的效果。 2. 注重常用算法的選取與組織 在常用算法的選取上克服貪多求全、貪廣求深,去除若干難度大、理論深、少有應用的算法羅列,結(jié)合本科教學目標與應用實際,選取枚舉、遞推、遞歸、回溯、動態(tài)規(guī)劃、貪心算法、分支限界法與模擬等常用算法。注意到分支限界是一種以廣度優(yōu)先搜索最優(yōu)解的基本算法,本版將分支限界法列入常用算法之中。 特別指出的是,模擬算法中的豎式運算模擬是總結(jié)推廣數(shù)論高精度計算的創(chuàng)新成果。 對精選的各種常用算法,在介紹算法的基本理論與設計思路基礎上,從實際案例的求解入手,重點突出該算法的基本思路、設計規(guī)范與實施步驟,列出程序清單,顯示案例求解結(jié)果,達到清晰明了、水到渠成的效果。 3. 注重典型案例的精選與提煉 針對選取的每一種常用算法,精選典型的實際應用案例,包括基本的數(shù)值求解、常規(guī)的數(shù)據(jù)處理、有趣的智力測試、巧妙的模擬探索,既有引導入門的基礎案例,也有難度較大的綜合案例;既有歷史悠久的經(jīng)典名題,也有構(gòu)思巧妙的新創(chuàng)趣題,難度適宜,深入淺出。 培養(yǎng)學生的學習興趣,激發(fā)學生的學習熱情,不是一兩句空洞說教所能奏效的,必須通過一系列有趣的實際案例來引導。本書針對所精選的常用算法,設計出初等難度基礎型、中等難度提升型、較高難度綜合型3種梯度的實際案例。這些案例的精選與提煉,有利于提高學生學習算法與程序設計的興趣,有利于學生在計算機實際應用方面開闊視野,使之在算法思路的開拓與設計技能的運用上有一個深層次的鍛煉與提高。其中,難度較大的綜合案例可作為相應課程的課程設計選用。 4. 注重算法設計與程序?qū)崿F(xiàn)的緊密結(jié)合 算法與程序?qū)嶋H上是一個統(tǒng)一體,不應該也不可能將它們對立與分割。本書對每一種常用算法的設計規(guī)范,具體落實到實際案例求解的各個環(huán)節(jié): 有算法設計提要,有程序?qū)崿F(xiàn)清單,有運行示例顯示,有算法改進與程序優(yōu)化,環(huán)環(huán)相扣,融為一體。通過算法設計與程序?qū)崿F(xiàn)的緊密結(jié)合,突出算法在解決實際案例中的核心地位與引導作用,不斷加深對所學算法的理解和領悟,切實提升應用所學算法解決實際問題的能力。 本書采用功能豐富、應用面廣、高校學生使用率最高的 C語言描述算法、編寫程序。為使用方便,所有程序均在VC 6.0編譯通過。 5. 注重算法改進與程序優(yōu)化 本書對一些典型案例應用多種不同的算法設計,編寫不同表現(xiàn)形式與設計風格的程序,充分體現(xiàn)了算法與程序設計的靈活性和多樣性。 算法與程序設計都不是一成不變的,可以實施多層次全方位的變通,變通出成果,變通長能力。算法改進與程序優(yōu)化的過程,既是提高案例求解效率的過程,也是算法設計能力培養(yǎng)與提高的過程,更是優(yōu)化意識與創(chuàng)新能力增強的過程。 為方便算法設計練習與查閱,附錄中提供部分習題求解提示,介紹在VC 6.0環(huán)境下運行C程序的方法,并列出C語言常用函數(shù)。書中的所有案例源程序與部分習題源代碼均可在指定網(wǎng)站下載。 在書稿的編寫與修訂過程中,湖南理工學院教務處及王岳斌教授、嚴權(quán)峰教授、周持中教授等給予了多方面支持與幫助,筆者在此一并深表感謝。 盡管每個案例求解都經(jīng)反復核實檢查,每個求解程序都經(jīng)多輪運行調(diào)試,因涉及內(nèi)容較廣,難免存在差錯,懇請各位讀者批評指正。
楊克昌2023年11月于岳陽南湖
第1章算法與程序設計概述1 1.1算法及其描述1 1.1.1算法定義1 1.1.2算法描述3 1.2算法的復雜性分析7 1.2.1時間復雜度7 1.2.2空間復雜度12 1.3算法設計與分析示例13 1.3.1求解最大公約數(shù)13 1.3.2拆分為連續(xù)正整數(shù)之和14 1.3.3統(tǒng)計n!尾部零16 1.4算法與程序設計18 1.4.1算法與程序18 1.4.2結(jié)構(gòu)化程序設計23 習題125第2章枚舉27 2.1枚舉概述27 2.2素數(shù)與合數(shù)28 2.2.1區(qū)間素數(shù)搜索29 2.2.2探求合數(shù)世紀30 2.2.3合數(shù)的質(zhì)因數(shù)分解32 2.3解方程34 2.3.1佩爾方程35 2.3.2超越方程36 2.4解不等式38 2.4.1分數(shù)不等式38 2.4.2代數(shù)和不等式39 2.5求最值42 2.5.1基于素數(shù)的代數(shù)和42 2.5.2整數(shù)的因數(shù)比43 2.6整數(shù)拆分45 2.6.1簡單的整幣兌零45 2.6.2拆分構(gòu)建雙和二組48 2.7數(shù)式探求50 2.7.1逆序乘積式50 2.7.2完美綜合式51 2.8趣味數(shù)陣54 2.8.1素數(shù)幻方54 2.8.2和積三角形57 2.9枚舉應用小結(jié)59 習題262第3章遞推64 3.1遞推概述64 3.1.1遞推算法64 3.1.2遞推實施步驟與描述65 3.2超級素數(shù)搜索66 3.3遞推數(shù)列69 3.3.1擺動數(shù)列70 3.3.2分數(shù)數(shù)列71 3.4冪序列72 3.4.1雙冪序列72 3.4.2冪積序列74 3.5數(shù)陣與網(wǎng)格79 3.5.1楊輝三角79 3.5.2交通方格網(wǎng)81 3.6整數(shù)劃分問題83 3.6.1整數(shù)劃分遞推設計83 3.6.2整數(shù)劃分遞推優(yōu)化84 3.7增強型整幣兌零86 3.8猴子爬山89 3.8.1簡單案例的具體遞推89 3.8.2一般情形的分級遞推90 3.9遞推應用小結(jié)92 習題393第4章遞歸95 4.1遞歸概述95 4.2排隊購票98 4.3漢諾塔問題99 4.3.1求移動次數(shù)100 4.3.2展示移動過程101 4.4旋轉(zhuǎn)數(shù)陣102 4.4.1雙轉(zhuǎn)向旋轉(zhuǎn)方陣102 4.4.2m行n列順轉(zhuǎn)矩陣105 4.5快速排序與選擇107 4.5.1快速排序107 4.5.2分區(qū)交換選擇110 4.6排列組合的實現(xiàn)112 4.6.1實現(xiàn)排列A(n,m)112 4.6.2實現(xiàn)組合C(n,m)114 4.6.3復雜排列116 4.7整數(shù)的拆分118 4.7.1拆分零數(shù)取自連續(xù)區(qū)間118 4.7.2拆分零數(shù)取自指定整數(shù)119 4.8遞歸應用小結(jié)121 習題4124第5章回溯法125 5.1回溯法概述125 5.1.1回溯的概念125 5.1.2回溯描述125 5.2橋本分數(shù)式與10數(shù)字分數(shù)式129 5.2.1橋本分數(shù)式129 5.2.210數(shù)字分數(shù)式131 5.3直尺與串珠133 5.3.1古尺神奇133 5.3.2數(shù)碼串珠135 5.4逐位整除數(shù)137 5.5環(huán)序列141 5.5.1素數(shù)和環(huán)141 5.5.2德布魯金環(huán)142 5.6伯努利裝錯信封問題144 5.6.1裝錯信封問題145 5.6.2特殊錯位探索148 5.7別出心裁的情侶拍照問題150 5.7.1逐位安排與回溯150 5.7.2成對安排與回溯152 5.8回溯應用小結(jié)153 習題5156第6章動態(tài)規(guī)劃157 6.1動態(tài)規(guī)劃概述157 6.1.1動態(tài)規(guī)劃的概念157 6.1.2動態(tài)規(guī)劃實施步驟158 6.2最長子序列探索159 6.2.1最長非降子序列159 6.2.2最長公共子序列162 6.3最優(yōu)路徑搜索164 6.3.1點數(shù)值三角形的最優(yōu)路徑165 6.3.2邊數(shù)值矩形的最優(yōu)路徑166 6.4裝載問題169 6.501背包問題173 6.5.1一般01背包問題173 6.5.2二維約束01背包問題177 6.6凸n邊形的三角形劃分179 6.7插入乘號問題181 6.8動態(tài)規(guī)劃應用小結(jié)184 習題6186第7章貪心算法188 7.1貪心算法概述188 7.2刪數(shù)字問題190 7.3埃及分數(shù)式192 7.3.1選擇最小分母構(gòu)建193 7.3.2貪心選擇范圍的擴展194 7.4可拆背包問題195 7.5數(shù)列操作與極差197 7.5.1數(shù)列操作197 7.5.2數(shù)列操作優(yōu)化198 7.5.3數(shù)列極差200 7.6哈夫曼樹及其應用202 7.6.1哈夫曼樹202 7.6.2哈夫曼編碼204 7.7貪心算法應用小結(jié)207 習題7208第8章分支限界法210 8.1分支限界法概述210 8.2搜索迷宮最短通道211 8.2.1矩陣迷宮212 8.2.2三角迷宮217 8.3增強型裝載問題220 8.4增強型01背包問題223 8.5新奇的八數(shù)碼游戲226 8.5.1移動常規(guī)設計227 8.5.2數(shù)組優(yōu)化設計231 8.6分支限界法應用小結(jié)234 習題8235第9章模擬236 9.1模擬概述236 9.1.1模擬分類236 9.1.2豎式運算模擬239 9.2精彩乘積式241 9.2.1積由指定一個整數(shù)重復構(gòu)成241 9.2.2積由指定兩個整數(shù)構(gòu)成245 9.2.3二部數(shù)積(ACM背景)249 9.3尾數(shù)前移問題252 9.3.1限1位尾數(shù)前移252 9.3.2多位尾數(shù)前移254 9.4階乘冪與排列組合數(shù)的計算255 9.5高精度計算圓周率257 9.6模擬發(fā)橋牌261 9.7泊松分酒問題263 9.8模擬應用小結(jié)266 習題9267第10章算法的綜合應用268 10.1高斯八皇后問題268 10.1.1高斯八皇后問題概述268 10.1.2n皇后問題270 10.1.3皇后全控棋盤問題274 10.2翻轉(zhuǎn)硬幣游戲277 10.2.1翻轉(zhuǎn)m9矩陣278 10.2.2翻轉(zhuǎn)mn矩陣280 10.2.3大規(guī)模矩陣求解283 10.3馬步遍歷與哈密頓圈286 10.3.1馬步遍歷286 10.3.2馬步型哈密頓圈293 10.3.3組合型哈密頓圈297 10.4綜合應用小結(jié)304 習題10304附錄A部分習題求解提示306附錄B在VC 6.0環(huán)境下運行C程序方法簡介323附錄CC語言常用庫函數(shù)327參考文獻331
|