(1)全面介绍算法设计思想以及算法分析原理。
(2)结构完整,内容从易到难,包含丰富实例与习题。
(3)对所涉及算法均提供C++或伪代码。
本书全面介绍算法设计思想以及算法分析原理。全书共分为四个部分:第一部分是基础知识,包含第1章与第2章,主要介绍算法的基本概念、算法复杂度分析的基本方法、随机算法以及理解本书所需掌握的数据结构知识等;第二部分包含第3~9章,介绍各种算法设计思想,包括分治策略、贪心策略、动态规划、搜索与遍历、回溯、分支定界、代数方法等;第三部分包含第10~12章,介绍算法复杂度理论知识,包括下界定理、NP难和NP完全问题以及近似算法等;最后一部分是并行算法,包括第13~15章,介绍PRAM算法、网格算法以及超立方算法。 本书结构完整,内容从易到难,包含丰富实例与习题,对所涉及算法均提供C++或伪代码,不仅可作为计算机专业本科或研究生的算法课程教材,也可作为算法爱好者的自学参考书。
第1章 导论
1.1 什么是算法
1.2 算法规范
1.2.1 导论
1.2.2 递归算法
1.3 性能分析
1.3.1 空间复杂度
1.3.2 时间复杂度
1.3.3 平摊复杂度
1.3.4 渐进符号(O,□,□)
1.3.5 实际复杂度
1.3.6 性能测量
1.4 概率算法
1.4.1 概率论基础
1.4.2 随机算法:正规描述
1.4.3 确认重复元素
1.4.4 素数测试
1.4.5 优缺点
1.5 参考文献及阅读
第2章 数据结构基础
2.1 栈与队列
2.2 树
2.2.1 术语
2.2.2 二叉树
2.3 字典
2.3.1 二叉搜索树
2.4 优先队列
2.4.1 堆
2.4.2 堆排序
2.5 集合与不相交集合的并集
2.5.1 导论
2.5.2 求并集及查找操作
2.6 图
2.6.1 导论
2.6.2 定义
2.6.3 图的表示
2.7 参考文献及阅读
第3章 分治策略
3.1 一般方法
3.2 残缺棋盘
3.3 二分搜索
3.4 找最大值和最小值
3.5 合并排序
3.6 快速排序
3.6.1 性能测量
3.6.2 随机排序算法
3.7 选择
3.7.1 最差情况下的最优算法
3.7.2 Select2的实现
3.8 矩阵相乘
3.9 凸包
3.9.1 几种几何基本
3.9.2 QuickHull算法
3.9.3 Graham扫描
3.9.4 O(nlogn)的分治算法
3.10 参考文献及阅读
3.11 附加习题
第4章 贪心法
4.1 一般方法
4.2 集装箱装船
4.3 背包问题
4.4 树节点分裂
4.5 有期限的工作序列化
4.6 最小生成树
4.6.1 Prim算法
4.6.2 Kruskal算法
4.6.3 最优的随机算法(*)
4.7 磁带最优存储
4.8 最优合并模式
4.9 单源最短路径
4.10 参考文献及阅读
4.11 附加习题
第5章 动态规划
5.1 一般方法
……
第6章 基本遍历及搜索技术
第7章 回溯
第8章 分支定界
第9章 代数问题
第10章 下界理论
第11章 难及完全问题
第12章 近似算法
第13章 PRAM算法
第14章 网格算法
第15章 超立方算法
如果我们预挑出计算机科学中那些影响长久的贡献,算法(algorithm)一定位列其中。自从人类发明了可以执行基本数学运算的机器,什么是可以计算的以及如何计算就成为人们一直研究的课题。伴随此项研究,人们发现了大量的重要算法以及设计方法。算法成为计算机科学领域中的一项重要组成部分。本书的目的就是对有关算法的内容精心地组织,从而使得使用本书的同学以及实践者可以设计和分析全新的算法。
一本包含所有已发明的算法的书将会异常冗长。传统的算法书通常只对很少的几个问题领域有深入的阐述。对于每个问题,通常会给出并分析效率最高的算法。这样的做法有一个主要缺点。尽管同学们了解了很多很快的算法并且也掌握了分析算法的工具,但还是对如何设计一个好的算法信心不足。
这里所欠缺的就是没有强调设计(design)技术。设计方面的知识一定可以帮助创造好的算法,没有分析工具则无法判断算法的优劣。这样设计为主分析为辅的关系就自然地延伸为有效的讲授之道:我们将围绕基本的算法设计策略来组织本书。基本的设计策略是相对比较少的。并且大部分读者想要学习的算法可以划分到这些分类中;例如归并排序和快速排序是分治策略的例子,而Kruskal的最小生成树算法和Dijkstra的单源最短路径算法是贪心策略的例子。理解这些策略是掌握设计技能的重要的第一步。
尽管我们深切地认为强调设计以及分析是组织算法学习的正确之路,这里还是要给出一些注意事项。首先,我们并没有包括所有的设计原理。例如线性规划是最成功的技术之一,由于它往往由单独的课程所讲述从而没有包含到本书中。其次,读者不应该死板地学习算法设计,认为每个算法都是由一种技术得到的。事实并不是如此。
本书的主要篇幅,第3~9章,描述了不同的设计策略。每种策略首先描述一个大概。通常给出一个“程序抽象”来描述采用该策略所形成的计算模式的大纲。接着给出一系列的例子来讲述该策略的复杂以及变化。这些例子往往是按照由易到难的次序安排。其复杂的程度可以在不同的方面升高。我们通常先给出一个非常容易理解的例子,所使用的数据结构也仅仅为一维的数组。对这个例子,所用设计策略显而易见可以得到正确的解法。后面的例子可能需要证明基于该设计技术的算法是正确的。也可能是需要更加复杂的数据结构(例如树或者图),并且分析更加复杂。这样组织的主要目的是强调组成和分析算法的艺术。另外还希望能让读者体会好的程序结构以及算法正确性的证明。
第1~12章中的算法都是用C++或者伪C++代码给出。很多是可以直接运行并且已经经过测试的。选择C++是因为它是面向对象的程序语言。C++在计算机业界被广泛接受还有其他的很多理由。选择这种程序语言并不是说不熟悉C++的读者就不能用这本书。因为本书中大部分的算法都是比较短的,用来描述这些算法的代码也足够简单可以被广大读者所理解。第13~15章讲述并行计算。并行计算是一个飞速发展的领域,没有一个被广泛接受的模型或者程序语言。因此,我们选择用伪代码来描述这些算法。第1~12章中也有些简单的算法是用伪代码描述的。这是因为我们认为这些算法的核心思想用伪代码描述更加清晰。如何将这些伪代码转换为C++代码将作为练习留给读者。
另外本书的一大特色是广泛地讨论了随机算法。第13~15章中的很多算法是随机的。其他章节中也包含了一些随机算法。一门学季制的并行算法导论课程可以包含第13~15章,以及其他少量的补充内容。
我们也标出了一些内容(用*号)是适用于高级课程的。这本书的内容可以作为本科高年级学生或者研究生的一门学期制课程,或者两门学季制的课程。它需要学生具备高级语言的编程能力,其余的内容都自完备的。实践上,一门数据结构课也是有帮助的,这样学生具备更成熟的编程能力。如果是学季制的学校,第一个学季可以讲授一些基本的设计技术,例如第3章~第9章中的分治、贪心、动态规划、搜索和遍历、回溯、分治定界以及代数方法(见表Ⅰ)。第二个学季可以讲授第10~15章:下界定理、 D_Dd__________ǒe??_____________
如果课程是一个学期的,并且学生之前没有接触过数据结构和大O表示,那么第1~7章、第11章以及第13章的内容比较合适(见表Ⅲ)。
如果进度更加紧凑一些可以包含第1~7章、第11章、第13章以及第14章的内容(见表Ⅳ)。
如果学生已经掌握了数据结构和大O表示,可以由第3~11章,以及第13~15章构成一门高级课程(见表Ⅴ)。
每章的最后给出了大量的习题可以作为课程作业。我们发现最受欢迎并且最有启发性的作业是让学生在同一个数据集上运行两个算法并且比较两个算法的运行时间。本书的绝大多数算法都有实现的细节,供学生们使用。将这些C++程序转换为其他语言的程序也不困难。那么剩余的就是构造合适的数据集以及编写一个main函数来完成上述的运行记时。记时的结果应该与算法的时间复杂度渐进分析的结论相一致。这项任务并不简单,是有教育意义并且很有趣的。最重要的是它强调了一个往往被人们忽视的方面,也就是算法在实用过程中还有实践性的一面。
在这个新版中,我们还加入一些新的例子以及习题,加强了平摊复杂度,更新了每章最后的参考文献以及阅读。
致谢
我们要感谢Martin J. Biernat、Jeff Jenness、Saleem Khan、Ming-Yang Kao、Douglas M. Compbell以及Stephen P. Leach的意见和建议。我们要感谢佛罗里达大学的同学指出了较早版本中的错误。我们还要感谢Teo Gonzalez、Danny Krizanc以及David Wei仔细阅读了部分章节。
Ellis Horowitz
Sartaj Sahni
Sanguthevar Rajasekaran
说实话,我购买这本书的时候,并没有抱太大的期望,只是觉得它是“世界著名计算机教材精选”系列中的一本,应该不会太差。但当我真正翻开它,才发现它远超我的想象。作者的讲解方式非常深入浅出,他能够将那些非常抽象和复杂的算法概念,用非常形象和易于理解的语言来阐述。例如,在讲解“图论”中的一些复杂算法时,他会使用一些非常贴切的比喻,让读者能够轻松地想象出算法的执行过程。C++语言的运用,更是让这些算法的理解和实践变得更加容易。书中的代码示例,每一个都经过了作者的精心设计,不仅实现了算法的功能,而且代码的风格非常严谨,注释也非常详细。我特别喜欢作者在书中对算法的“复杂度分析”部分的讲解,他不仅仅给出了时间复杂度和空间复杂度的计算方法,还深入分析了不同算法在不同场景下的性能表现。这让我对如何选择和优化算法有了更深刻的认识。我曾经花费了大量的时间,去研究书中关于“字符串匹配算法”的部分,例如“KMP算法”和“Boyer-Moore算法”。这些算法在实际应用中非常重要,但理解起来却有些难度。然而,通过这本书的讲解,我感觉自己豁然开朗,对这些算法的理解达到了前所未有的深度。我甚至会尝试着去修改书中的代码,去实现一些变种算法,去探索它们在不同场景下的表现。这种“学以致用”的过程,让我对算法的理解更加深刻,也让我对C++这门语言的应用有了更深的认识。这本书,无疑是我提升编程技能的“利器”。
评分老实说,我一开始抱着一种“试试看”的心态来阅读这本书的,毕竟市面上关于算法的书籍太多了,很难找到一本真正能够打动我的。然而,这本书却给了我巨大的惊喜。作者的讲解方式非常独特,他并没有急于给出复杂的算法实现,而是先花了很多篇幅去铺垫,去解释算法的背景、它的应用场景,以及它之所以能够存在的理论基础。这种“循序渐进”的学习方式,让我能够深刻地理解算法的“前因后果”,而不是仅仅停留在“知其然,不知其所以然”的层面。C++语言的运用,更是为这些算法注入了生命力。书中的每一个算法实现,都经过了作者的反复推敲和优化,不仅代码简洁高效,而且可读性非常强。我喜欢作者在代码中加入的那些细致的注释,它们就像一位耐心的老师,一步一步地引导我理解代码的逻辑。我曾经花费了大量的时间,去钻研书中关于“图算法”的部分,例如“Dijkstra算法”和“Floyd-Warshall算法”。这些算法在实际应用中非常重要,但理解起来却有些难度。然而,通过这本书的讲解,我感觉自己豁然开朗,对这些算法的理解达到了前所未有的深度。我甚至会尝试着去修改书中的代码,去实现一些变种算法,去探索它们在不同场景下的表现。这种“动手实践”的过程,让我对算法的理解更加深刻,也让我对C++这门语言的应用有了更深的认识。这本书的价值,不仅仅在于它提供了大量的算法知识,更在于它培养了我一种“解决问题的能力”。我学会了如何从问题的本质出发,去设计和实现最优的算法。这种能力,是我在今后的编程生涯中受益无穷的。
评分这本书真是让我眼前一亮,它不仅仅是一本教材,更像是一本引人入胜的武林秘籍,而我,则是一位渴望掌握绝世武功的初出茅庐的侠客。翻开书页,首先映入眼帘的是那些看似晦涩难懂的算法概念,但作者用一种近乎艺术的方式,将它们一一拆解,仿佛是一位经验丰富的老宗师,耐心细致地向弟子传授每一招每一式的精髓。C++语言的引入,更像是为这些算法注入了鲜活的生命力。我一直对C++有些畏惧,觉得它复杂且难以驾驭,但这本书却巧妙地将算法的思想与C++的语法完美融合,让我在学习算法的同时,也逐渐掌握了这门强大的编程语言。书中提供的那些详尽的代码示例,每一个都经过精心打磨,不仅清晰地展示了算法的实现过程,还充满了作者对代码风格和效率的极致追求。我反复揣摩这些代码,尝试着自己去改写、去拓展,在这个过程中,我对算法的理解不再是停留在理论层面,而是真正地将其内化为自己的能力。这本书的难度梯度设计得非常合理,从基础的排序、搜索算法,到后面更复杂的图论、动态规划,每一步都像是在攀登一座座技术的高峰,每一次成功地解决书中提出的练习题,都给我带来巨大的成就感。我甚至会花上几个小时,去思考一个算法的优化空间,尝试用不同的方法去实现,对比它们的效率和优雅程度。这种沉浸式的学习体验,是我在其他教材中鲜少感受到的。它不仅仅是知识的传递,更是一种思维方式的启发,让我学会如何用更严谨、更具逻辑性的方式去分析和解决问题。我常常在深夜里,对着屏幕上跳动的代码,感受着算法的魅力,仿佛自己也成为了那个创造计算机世界的魔法师。这本书,无疑是我编程之路上一块坚实的基石。
评分这本书,给我最大的感受就是“接地气”。虽然它讲解的是一些相对“高大上”的算法概念,但作者的语言却非常朴实,而且充满了生活化的例子。例如,在讲解“贪心算法”时,他会将问题比作我们在日常生活中如何做出最“划算”的选择,让我们更容易理解算法的决策过程。C++语言的运用,更是将这些抽象的概念变得触手可及。书中的代码示例,每一个都经过了作者的精心设计,不仅能够正确地实现算法,而且代码风格严谨,注释清晰,仿佛作者生怕我看不懂,亲自在旁边手把手教学。我尤其喜欢作者在书中对“回溯算法”和“分支限界法”的讲解,他通过一些经典的谜题,让我们体会到这些算法在解决复杂问题时的强大威力。我曾经花费了大量的时间,去研究书中关于“背包问题”和“旅行商问题”的解决方法,我尝试着自己去用不同的算法去解决它们,去对比它们的效率和准确性。在这个过程中,我不仅掌握了这些经典的算法,更重要的是,我学会了如何像一个真正的算法工程师那样去思考问题,去分析问题的本质。这本书的价值,远不止于教会我写出几个算法,它更重要的是培养了我一种“问题解决”的能力,让我能够用更系统、更严谨的方式去解决编程中遇到的各种问题。
评分我必须承认,这本书一开始让我感到有些“望而生畏”。它里面的内容,涉及到大量的数学公式和复杂的逻辑推理,对于我这样一个初学者来说,确实是个不小的挑战。然而,作者并没有因此而降低讲解的门槛,反而以一种近乎“严苛”的态度,去要求读者理解每一个概念的细枝末节。这种“硬核”的风格,反而激发了我内在的好胜心。我反复阅读书中的每一个章节,一遍又一遍地推导公式,一遍又一遍地对照代码。我甚至会拿出一张纸,画出算法的流程图,去模拟它的执行过程。在这种“痛苦”但却充实的过程中,我逐渐体会到了算法的精妙之处。C++语言的运用,为这些抽象的概念提供了具体的载体。书中的代码示例,每一个都经过了作者的精心雕琢,不仅仅是实现功能,更重要的是体现了算法的优雅和效率。我喜欢作者对代码优化方面的讲解,他会分析不同实现方式的优劣,会指出潜在的性能瓶颈,这让我对代码的“性能”有了更深刻的认识。我曾经花费了大量的时间,去理解书中关于“动态规划”的部分。这个概念对我来说非常抽象,但通过作者细致的讲解和生动的例子,我逐渐体会到了它的强大之处。我甚至会尝试着去解决一些现实生活中的问题,并尝试用动态规划的思路去解决它们。这种“学以致用”的过程,让我觉得学习过程充满了意义。这本书,虽然在一定程度上挑战了我的能力极限,但它也让我看到了自己的潜力和进步空间。我愿意投入更多的时间和精力,去征服这本书中的每一个难关,因为我知道,这将是我迈向更高级别编程境界的必经之路。
评分坦白说,我购买这本书的初衷,更多的是一种“跟风”的冲动。市场上关于计算机算法的书籍琳琅满目,而这本《计算机算法:C++语言描述(第2版)》似乎总是被摆在最显眼的位置,各大技术论坛的推荐也从未间断。抱着“大家都说好,那我也试试”的心态,我把它收入囊中。然而,当我真正翻开它,才意识到这股“风”并非空穴来风。作者在对算法的阐述上,展现出一种近乎执拗的严谨。他不像一些教科书那样,只是简单罗列公式和代码,而是深入剖析了每一个算法的“前世今生”——它的提出背景、解决了什么样的问题、以及它背后蕴含的思想。这种“溯源”式的讲解,让我对算法的理解不再是死记硬背,而是真正理解了它的“为什么”。C++语言的运用,恰到好处地成为了连接理论与实践的桥梁。书中每一个算法的实现,都力求简洁、高效、易于理解,并且附带了详尽的注释,仿佛作者生怕我看不懂,亲自在旁边手把手教学。我尤其喜欢书中对复杂算法的分解,它能够将一个庞大而复杂的概念,拆分成一个个小的、易于掌握的模块,然后循序渐进地构建起来。这种“化繁为简”的能力,让我觉得学习过程不再那么令人望而生畏。而且,这本书不仅仅关注算法本身,还花费了大量的篇幅去讨论算法的复杂度分析。这对我来说,是一个全新的视角。我之前写代码,只管功能实现,很少去考虑效率问题。但通过阅读这本书,我才意识到,在算法的世界里,效率是衡量一门“手艺”是否精湛的重要标准。我开始尝试用各种方法去优化我写过的代码,去理解“时间复杂度”和“空间复杂度”的真正含义。这种对效率的追求,也逐渐渗透到我日常的编程习惯中,让我的代码变得更加“聪明”。
评分这本书,对我来说,就像一本“算法的百科全书”,又像一本“C++的实战指南”。作者的讲解方式非常系统,从最基础的排序、搜索算法,到后面更复杂的图论、动态规划,每一个章节的内容都衔接得非常自然。他不仅讲解了算法的原理,还深入剖析了算法的各种优化方法和实际应用场景。C++语言的运用,更是让这些理论知识变得触手可及。书中的代码示例,每一个都经过了作者的精心打磨,不仅能够正确地实现算法,而且代码风格严谨,注释清晰,仿佛作者生怕我看不懂,亲自在旁边手把手教学。我喜欢作者在书中对“数据结构”和“算法”之间关系的阐述,他清晰地展示了不同的数据结构如何影响算法的效率,以及如何根据算法的需求选择合适的数据结构。这种“软硬兼施”的讲解方式,让我对整个计算机科学的知识体系有了更全面的认识。我曾经花费了大量的时间,去钻研书中关于“树结构”和“图结构”的部分,我尝试着自己去实现各种遍历算法,去理解它们在不同场景下的应用。在这个过程中,我不仅掌握了这些数据结构和算法,更重要的是,我学会了如何像一个真正的算法工程师那样去思考问题,去分析问题的本质。这本书的价值,远不止于教会我写出几个算法,它更重要的是培养了我一种“抽象思维”和“逻辑推理”的能力,让我能够用更系统、更严谨的方式去解决编程中遇到的各种问题。
评分这本书给我带来的,是一种前所未有的“顿悟”感。我一直认为自己对计算机科学领域有所涉猎,也看过不少相关的书籍,但直到遇到这本书,我才觉得自己真正触碰到了“算法”这个核心的灵魂。它不像我之前读过的那些书,只是泛泛而谈,或者只给出一些表面的讲解,而是深入到了算法的每一个细节,每一个逻辑分支。作者的文字功底非常深厚,他能够用非常生动形象的比喻,来解释那些抽象的算法概念。例如,在讲解“分治法”时,他会将一个复杂的问题比作一个巨大的难题,然后教你如何将其分解成一个个可以轻松解决的小问题,再将这些小问题的答案组合起来,最终解决整个难题。这种讲解方式,让我感觉自己像是在听一位哲学大师在讲课,而不是在看一本枯燥的技术书籍。C++语言的运用,更是将这些抽象的算法具象化了。书中的每一个代码示例,都经过了精心设计,不仅能够正确地实现算法,而且代码风格严谨,注释清晰,仿佛每一行代码都凝聚了作者的智慧和心血。我曾经花费了大量的时间,去研究书中的一些经典算法,例如“快速排序”和“堆排序”,我尝试着自己去推导它们的步骤,去理解它们为什么能够达到如此高的效率。在这个过程中,我不仅掌握了这些算法,更重要的是,我学会了如何像一个真正的算法工程师那样去思考问题,去分析问题的本质。这本书的价值,远不止于教会我写出几个算法,它更重要的是培养了我一种“算法思维”,让我能够用更系统、更严谨的方式去解决编程中遇到的各种问题。我甚至觉得,这本书不仅仅是学习计算机算法的必备读物,它更是塑造一个优秀程序员思维模式的“启蒙书”。
评分这本书,可以说是我的“算法启蒙书”。在我初次接触计算机编程时,就对算法充满了好奇,但总是苦于找不到一本能够真正引导我的入门书籍。直到我遇到了这本书,我才真正体会到了算法的魅力。作者的讲解方式非常细致,他会从最基础的概念讲起,一步一步地引导读者深入。C++语言的运用,更是将这些抽象的概念变得生动有趣。书中的代码示例,每一个都经过了作者的精心设计,不仅能够正确地实现算法,而且代码风格严谨,注释清晰,仿佛作者生怕我看不懂,亲自在旁边手把手教学。我尤其喜欢作者在书中对“递归”和“迭代”的讲解,他通过一些经典的例子,让我们清晰地理解了这两种不同的编程范式。我曾经花费了大量的时间,去研究书中关于“二叉树”和“哈夫曼编码”的部分,我尝试着自己去实现各种遍历算法,去理解它们在不同场景下的应用。在这个过程中,我不仅掌握了这些数据结构和算法,更重要的是,我学会了如何像一个真正的算法工程师那样去思考问题,去分析问题的本质。这本书的价值,远不止于教会我写出几个算法,它更重要的是培养了我一种“编程思维”,让我能够用更系统、更严谨的方式去解决编程中遇到的各种问题。
评分这本书给我带来的,是一种“豁然开朗”的体验。我一直对计算机算法有着浓厚的兴趣,也看过不少相关的书籍,但总感觉难以深入。直到遇到这本书,我才觉得自己真正触碰到了“算法”的精髓。作者的讲解风格非常独特,他并没有急于给出算法的实现,而是先花大量的篇幅去铺垫,去解释算法的背景、它的应用场景,以及它之所以能够存在的理论基础。这种“深入浅出”的讲解方式,让我能够深刻地理解算法的“前因后果”,而不是仅仅停留在“知其然,不知其所以然”的层面。C++语言的运用,更是将这些抽象的算法具象化了。书中的每一个代码示例,都经过了作者的精心设计,不仅能够正确地实现算法,而且代码风格严谨,注释清晰,仿佛每一行代码都凝聚了作者的智慧和心血。我尤其喜欢书中对复杂算法的分解,它能够将一个庞大而复杂的概念,拆分成一个个小的、易于掌握的模块,然后循序渐进地构建起来。这种“化繁为简”的能力,让我觉得学习过程不再那么令人望而生畏。而且,这本书不仅仅关注算法本身,还花费了大量的篇幅去讨论算法的复杂度分析。这对我来说,是一个全新的视角。我之前写代码,只管功能实现,很少去考虑效率问题。但通过阅读这本书,我才意识到,在算法的世界里,效率是衡量一门“手艺”是否精湛的重要标准。我开始尝试用各种方法去优化我写过的代码,去理解“时间复杂度”和“空间复杂度”的真正含义。这种对效率的追求,也逐渐渗透到我日常的编程习惯中,让我的代码变得更加“聪明”。
评分正版图书,很okokokok
评分还没看
评分还没看
评分还没看
评分65353565535537575735.35735
评分很快
评分65353565535537575735.35735
评分相当有用的一本书,对学算法很有帮助
评分正版图书,很okokokok
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有