的调用结果,理解调用流程。
✧编制字符串是否为“回文”的递归函数。
✧编制比较两个字符串大小的非递归和递归函数。
✧编制一个二分查找的非递归和递归函数。
✧Hanoi塔问题,统计递归的调用次数。
Ø知识
✓非递归算法和递归算法可以互相转化。
✓递归的实质是栈结构。
✓递归在某些场合似乎成为唯一选择(如Hanoi塔)。
✓静态变量统计函数调用次数。
✓递归的调用流程大多数时候比较难说明。
§1.1.15Josephus问题——规模不确定,new和delete
◆问题
✧有m个人围成一圈,从1到n循环报数,报到n的人退出,最后剩下的人是哪位?
(封装成函数,单独的头文件和源组织)
Ø知识
✓静态数据方法和动态数据方法的优缺点。
✓new和delete的使用。
§1.1.16哥德巴赫猜想——构造性验证
◆问题
✧验证一个不小于6的偶数可以表示成两个素数之和。
(抽象出多次调用的函数,单独的头文件和源文件组织)
Ø知识
✓编译预处理指令。
✓四色定理的证明,归结为一个有限验证。
✓几何定理的机器证明,将证明转化为代数问题(通常是多项式方程组的求解问题)(吴方法)。
与枚举有千壤之别。
§1.1.17矩阵求逆——从文件读入数据
◆问题
✧从文件中读入一个矩阵,求其逆矩阵并输出到另一文件。
✧从文件中读入线性方程组,用Gauss消元法求解并输出到另一文件。
Ø知识
✓文件是大量数据输入输出的有力手段。
✓动态二维数据的申请和使用。
✓命令行参的使用
§1.1.18经典问题——面向过程的程序综合
◆问题
✧八皇后问题。
在8*8的棋盘上,放置8个皇后,使她们不能位于同一行、同一列、同一对角线上,请给出一种摆放方法或报告无解。
✧骑士巡游问题。
在N*N棋盘上,一位骑士从某位置出发,按照中国象棋中“马”的走法(日字对角),欲走遍棋盘上的所有位置各一次,请给出路线图或报告无解。
Ø知识
✓所述问题直接给出了模型,需设计算法并实现算法。
✓确定问题的解空间,通常是一棵树(子集树/排列树)。
✓使用回溯方法,活动节点、扩展节点、死节点。
✓单个解、所有解。
✓一边构造解答树,一边搜索,同时抛弃已搜索的树枝。
✓各类经典算法:
分治法、贪心法、回溯法、分支限界法、动态规划等
(一)可行解示例
(二)解答树示例
(三)解的数据结构
合适的表示解空间(solutionspace)是非常重要的,往往决定者算法的实现难易程度。
n后问题中,解可用数组x[1:
n]表示,x[k]表示第k行的皇后放在x[k]列。
算法的基本思路是从部分可行解{x[1],x[2],……,x[k]}出发,搜索x[k+1],直至找到一个可行或全部可行解。
骑士巡游问题的解是一个二元组(r,c)构成有n*n个元素的一维数组,第k个元素表示第k步落在r行c列。
所有二元组恰好就是棋盘上的各个位置,可用二维数组表示,将每个位置在解数组中的序号保存在对应的二维数组元素中,从而保存了解的所有性质。
(四)递归的观点
已求得部分可行解{x[1],x[2],……,x[k]}后,求解的剩余部分是一个与原问题一样的规模较小的问题,差别仅是解的约束需要考虑已找到的部分解。
第2章面向对象的程序设计
§2.1面向对象的程序设计(控制台应用程序)
§2.1.1简单的学生成绩管理问题
◆问题
✧今需管理若干名学生的成绩信息,个体信息包含:
学号,姓名,分析、代数、几何三门课的成绩。
输入人数和每个学生的所有数据,计算每个人的平均成绩,按平均成绩又高到低的顺序输出所有信息。
Ø知识
✓分析和设计,确定问题当中的类,数据处理方法。
✓实现分析过程得到的类。
✓综合利用已有的方法和手段(动态申请、排序)。
✓测试程序是否满足要求。
✓程序的多文件组织(重用的观点)。
✓对象方法的数据处理范围和对对象集合处理的方法的数据处理范围的区别(各人自扫门前雪)。
§2.2图形界面程序(GUI程序)
第3章样式名称及使用
由于文档之间的拷贝和粘贴,重名样式可能被覆盖,样式名可能被修改,造成排版困难。
因此,构造一套自己的样式名,以便保持格式。
同时,目录中还可以包含内置的标题和大纲级别,使目录的生成更加灵活。
§3.1样式名称
§3.1.1标题名称
§3.1.1.1一级标题
“D标题1”。
大纲级别1,自动编目为第x章,段前换页,居中,宋体二号,粗体。
基于“正文”,无基于样式,后续段落“D正文”。
§3.1.1.2二级标题
“D标题2”。
大纲级别2,自动编目为§x.x,左对齐,宋体三号,粗体。
基于“正文”,无基于样式,后续段落“D正文”。
§3.1.1.3三级标题
“D标题3”。
大纲级别3,自动编目为§x.x.x,左对齐,宋体四号,粗体。
基于“正文”,无基于样式,后续段落“D正文”。
§3.1.1.4四级标题
“D标题4”。
大纲级别4,自动编目为§x.x.x.x,左对齐,宋体小四号,粗体首行缩进2字符。
无基于样式,后续段落“D正文”。
§3.1.2正文名称
“D正文”。
宋体小四,首行缩进2字符,1.5倍行距。
无基于样式,后续段落“D正文”。
§3.1.3页眉页脚
“D页眉”、“D页脚”,宋体小五,下边框、上边框,居中。
§3.2页面设置
Top=3厘米,Bottom=2.54厘米,Left=Right=2.54厘米。
页眉边距=2厘米,页脚边距=1.75厘米,首页页眉页脚与其它页不同。
§3.3样式创建
从空白文档开始,特别注意的是自动编目设置,一定要在同一编目体系下进行,可先命名设置好字体、段落、前后间空,再一次性自定义编目。
编目与标题之间用空格而不是制表符分割,使得编目较长时不会有问题。
§3.4样式使用
§3.4.1文档模版
将此文档作为模版,用格式名称或格式刷应用样式。
§3.4.2文档目录
目录中设置了显示4级大纲。
分别是“D标题1”、“D标题2”、“D标题3”、“D标题4”。
第4章Word使用的几个问题
§4.1修订和审阅
选中“工具|修订”,则所有更改的前后状态都被保存。
凡在“修订”模式下进行过更改的文档,可以用“工具|自定义|审阅”激活审阅工具栏,在其上选择显示状态,接受或拒绝单个修订或所有修订。
修订历史纪录不但使文档较大,也可能会引起文档内部问题,最终文档版本最好用上述法消除修订历史。
§4.2样式创建与保护
§4.2.1样式创建和修改
创建样式可从“工具|样式和格式”或从“格式工具栏”上的快捷按钮进入。
在样式中最好不要选中“添加到模版”和“自动更新”。
添加到模版(Normal.dot)将影响到以后文档的创建。
自建样式最好不要基于已有样式,应为基于样式的改变会引发倚赖其的样式改变。
慎用“样式和格式”任务栏中的“更新以匹配选择”,它会用当前选中的段落的格式替换进行操作的样式,造成样式的破坏。
§4.2.2样式保护
进入“工具|文档保护”可以强制设置样式、文档保护,启用禁用保护需要密码,此保护在对文档进行大修改时,不宜使用。
已可以在“格式工具栏”点击进入。
§4.3无用样式删除
在“格式工具栏”点击选择“XML结构|模版和加载项|模版|管理器”,在其中可以删除无用的样式。
当从其它文档复制粘贴内容后,可能会引起原文档中的样式名的改变,删除部分冗余的样式,可以提高文档的可用性。