搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
挑战编程:程序设计竞赛训练手册:the programming contest training manual
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302197973
  • 作      者:
    Steven S. Skiena,Miguel A. Revilla著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2009
收藏
作者简介
  Steven S.Skiena是美国Stony Brook大学计算机教授,研究方向包括图、串和几何算法的设计和应用(尤其是生物方面)。
    他曾获ONR青年研究员奖和IEEE计算机科学与工程本科教学奖,并著有四本书籍,包括“The Algorithm Design Manual”和“Calculated Bets:Computers,Gambling,andMathematical Modeling to Win”。
    Miguel A.Revilla是西班牙Valladolid大学应用数学与算法教授。他是ACM/ICPC官方网站的资料整理者,创立并维护着全球最权威的在线评测与网络比赛系统。他涉足ICPC十余年,如今已是ACM国际指导委员会成员。2005年,他荣获Joseph S.DeBlasi杰出贡献奖。目前,他是EduJudge项目在Valladolid大学的领导者,致力于把在线评测系统用于有效的电子学习中。
展开
内容介绍
  《挑战编程:程序设计竞赛训练手册》分为14章,分别介绍在线评测系统的基本使用方法、数据结构、字符串、排序、算术与代数、组合数学、数论、回溯法、图遍历、图算法、动态规划、网格、几何,以及计算几何,并在附录中介绍了一些著名的程序设计竞赛以及相应的备赛建议与比赛技巧。每章的正文用十余页的篇幅覆盖了该领域最核心的概念和算法,然后给出八道可在线提交的完整编程挑战题目供读者练习。
  全书内容紧凑、信息量大,是各类程序设计竞赛的选手与教练不可多得的参考书。
展开
精彩书摘
  第2章  数据结构
  数据结构是复杂算法的核心。数据结构的选择会对算法实现的复杂性产生巨大的影响。选择了正确的数据结构,编程会十分容易;选择了错误的数据结构,则需要大量的时间和代码量作为决策失误的代价。
  在本章中,你将复习到一些每个程序员都应熟悉的基础数据结构。我们将以一个孩子们喜欢的扑克牌游戏作为背景展开讨论。很多经典的编程题目都是以游戏为背景的。几乎所有人在初学编程的课程中都会接触到汉诺塔(Hanoi Tower)、骑士周游、八皇后这样的游戏。
  2.1  基本数据结构
  我们首先介绍栈(stack)、队列(queue)、字典(dictionaries)、优先队列(priority queues)、集合(sets)等最重要的数据结构的抽象操作(abstract operations),接下来简单描述从头实现这些操作的最简单的方法。
  请注意,c++和Java这样的现代面向对象程序设计语言都已经在它们的标准库中实现了基础数据结构。我们将在2.2节中简单地介绍它们。每个程序员都应该花一些时间来熟悉这些数据结构,而不是每次都从头实现。当你很好地熟悉了这些库的使用方法后,在阅读本节时便可专注于这些数据结构所擅长的领域而非实现细节。
展开
目录
译者序
前言
第1章 入门
1.1 初识自动评测系统
1.1.1 评测系统反馈
1.2 挑选你的武器
1.2.1 程序设计语言
1.2.2 如何阅读本书的程序
1.2.3 标准输入输出
1.3 编程提示
1.4 基本数据类型
1.5 关于习题
1.6 习题
1.6.1 3n+1问题(3n+l Problem)
1.6.2 扫雷(Minesweeper)
1.6.3 旅行(The Trip)
1.6.4 液晶显示屏(LC~Display)
1.6.5 图形化编辑器(Graphical Editor)
1.6.6 解释器(Interpreter)
1.6.7 将军fCheck the Checkl
1.6.8 澳大利亚投票(Australian Voting)
1.7 提示
1.8 注解

第2章 数据结构
2.1 基本数据结构
2.1.1 栈
2.1.2 队列
2.1.3 字典
2.1.4 优先队列
2.1.5 集合
2.2 库函数
2.2.1 C++标准模板库
2.3 程序设计实例:纸牌大战
2.4 准备行动
2.5 字符串输入输出
2.6 赢得战争
2.7 测试与调试
2.8 习题
2.8.1 快乐的跳跃者(Jolly Jumper)
2.8.2 扑克牌型(Poker Hands)
2.8.3 罢工(Hartals)
2.8.4 解密(Crypt Kicker)
2.8.5 完美洗牌术(Stack’em Up)
2.8.6 ErdSs数(ErdSs Numbersl
2.8.7 比赛记分板(Contest Scoreboard)
2.8.8 Yahtzee游戏(Yahtzee)
2.9 习题
2.10 注解

第3章 字符串
3.1 字符编码
3.2 字符串的表示
3.3 程序设计实例:公司更名
3.4 模式查找
3.5 字符串操作
3.6 程序的完成
3.7 字符串库函数
3.8 习题
3.8.1 WERTYU键盘fWERTYU)
3.8.2 寻找单词(Where’s Waldorf?)
3.8.3 公共排列(Common Permutation)
3.8.4 解密II(Crypt Kicker II)
3.8.5 自动评测脚本(Automated Judge Script)
3.8.6 文件碎片(File Fragmentation)
3.8.7 Doublet序列fDoublets)
3.8.8 Fmt程序(Fmt)
3.9 提示
3.10 注解

第4章 排序
4.1 排序的应用
4.2 排序算法
4.3 程序设计举例:给绅士排名
4.4 与排序相关的库函数
4.5 给绅士排名
4.6 习题
4.6.1  vito家族(Vito’s Family)
4.6.2 煎饼堆(Stacks of Flapjacks)
4.6.3 过桥(Bridge)
4.6.4 最长打盹时间(Longest.Nap)
4.6.5 鞋匠的烦恼(Shoemaker’s Probleml
4.6.6 CDVII高速公路(CDVIl)
4.6.7 龟壳排序(ShellSort)
4.6.8 足球(Fhotball(aka Soccer))
4.7 提示
4.8 注解

第5章 算术与代数
5.1 机器算术
5.1.1 整数库函数
5.2 高精度整数
5.3 高精度算术
5.4 进制及其转换、
5.5 实数
5.5.1 如何处理实数
5.5.2 分数
5.5.3 十进制实数
5.6 代数
5.6.1 多项式运算
5.6.2 多项式求根
5.7 对数
5.8 实数函数库
5.9 习题
5.9.1 小学生算术(Primary Arithmetic)
5.9.2 反转相加(Reverse and Add)
5.9.3 考古学家的烦恼(The Archeologist’S Dilemma)
5.9.4 仅由1组成的数(Ones)
5.9.5 乘法游戏(A Multiplication Game)
5.9.6 多项式的系数(Polynomial Coefficiets)
5.9.7 Stern-Brocot代数系统(The Stern-Brocot Number System)
5.9.8 两两之和(Pairsumonious Numbers)
5.10 提示
5.11 注解

第6章 组合数学
6.1 基本计数技巧
6.2 递推关系
6.3 二项式系数
6.4 其他计数序列
6.5 递归与数学归纳法
6.6 习题
6.6.1 斐波那契计数(How Many Fibs?)
6.6.2 土地分割(How Many Pieces of Land?)
6.6.3 数数(Counting)
6.6.4 括号表达式(Expressions)
6.6.5 完全树标号(Complete Tree Labeling)
6.6.6 牧师数学家fThe Priest Mathematician)
6.6.7 自描述序列(Self-describing Sequence)
6.6.8 数轴行走(Steps)
6.7 提示
6.8 注解

第7章 数论
7.1 素数
7.1.1 寻找素数
7.1.2 素数的个数
7.2 整除性
7.2.1 最大公约数
7.2.2 最小公倍数

第8章 回溯法
第9章 图遍历
第10章 图算法
第11章 动态规划
第12章 网格
第13章 几何
第14章 计算几何
附录A
参考文献
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证