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