Skip to content

liangxin1988/Algorithms-4th-Anwser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithms-4th-Answer

算法第四版中习题答案。所有答案都是自己做的,会有错误,如果有小伙伴发现错误欢迎指正。

查看习题代码

  • 所有答案的代码存放在Answer包中,其中:
    • 对应章的答案存放在对应的chapterX包下,其中X为章数(如第一章答案存放在chapter1中)
    • 对应小节的答案存放在对应chapter包中的sectionX中,其中X为小节数(如第一章第一小节答案存放在chapter1.section1中)
    • 找到对应包后,从中找Ex_X类,即为题目答案。其中X为题号。(如第一题类名为Ex_1)。
  • 有些答案代码中会有注释,可帮助理解。
  • 有些题目要求定义一些类和方法。
    • 如果类或方法通用性低,会作为题目类的内部类或内部方法进行定义。
    • 如果类或方法通用性高,会尽量抽离为工具方法,并在题目类中进行调用。
    • 如果需要实现某种数据结构,那么会在对应数据结构的包中实现这个类,并在题目中实现测试代码。

运行习题答案

执行Main类中的main方法,并在控制台追加参数(方法参考使用编译器的使用说明)

  • 第一个参数必须为标准题号(书中使用的题号的格式,如:1.1.1),查看该题的运行结果。
  • 习题中需要使用参数,可在题号后面追加参数,也可不追加(所有需要参数的习题给出默认值)
  • 通过输入多个题号(如:1.1.1,1.1.2,1.1.3),可一次性查看多道题的运行结果。这种方式暂不支持追加参数。
  • 有些题目要求给出参数,不过在做题的过程中暂时没有严格遵守题目约定。
  • 题目中的部分要求通过Stdin输入的数据,题目中也定义为需要通过参数给定。

提交习题答案

定义习题类

通过习题的定义原则,找到习题所在的类。

  • 习题类包名或类名
    • 根据规则创建习题类,习题类必须继承对应的习题类型父类,如果不存在对应类型,则需要创建新的习题类型父类。
    • 实现answer方法,实现习题的答案。
    • 对于有参数的习题类,需要实现getDefault()方法设置默认值(设置方法参考现有实现)
  • 如果一道习题有多种解答,会在习题类中创建多个方法,并由answer方法统一进行调用测试。
  • 由于本人目前处于学习阶段,暂时不允许添加习题答案(可修改已有答案中的错误)

关于习题类型

习题类型用来表示习题使用的参数的类型。 有些题目不需要参数(如1.1.1),有些参数需要参数(如1.1.3)。 为了让习题类中脱离解析参数的冗余代码,专注于习题答案本身。 参数需要通过习题类型进行解析,并给拱给习题使用。

定义习题类型

继承BaseArgsAnswer可以定义习题的类型。继承这个类需要实现其中的方法:

  • 构造方法:提供一个无参数的构造方法。在该构造方法中传入习题需要的参数个数。
  • getConverts:获取习题参数转换器数组。 该数组长度与构造函数中传入的参数个数一致。 通过数组中的每个对象,来将String类型的参数转换为题目中要求的参数
  • 对应参数的get方法:定义多个获取参数的方法(以getArgsX命名,其中X为参数的索引), 并在其中将父类中的Ojbect对象强转为习题中需要的对象(直接强转即可,父类中已经做了类型转换)。

现有习题类型

  • Answer0:习题不需要参数
  • Answer3Integer:习题中需要3个int类型的参数

其他说明

  1. 为了突出题目的思路,简化无关代码。题目中没有对与算法无关的代码进行性能优化,如拼接字符串可能直接使用性能较差,但是代码清晰的“+”运算符。

About

算法第四版中习题答案

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages