一、问题说明
国际象棋的棋盘为8*8的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则(与中国象棋规则一样,马走“日”字)将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格,回到起点。
编写代码,实现对棋盘的马踏棋盘操作,给定初始位置,用数字给出“马”移动的路径并格式化输出。
必须实现的算法:分治法。
二、相关要求
要求提交程序和实验报告,打包成“作业X-程序语言.zip”(如“作业4-c.zip”、“作业4-java.zip”,其中c/c++语言统一用“c”表示)提交。提交前把Debug, Release等编译文件删除,只保留代码源文件。
程序:不限语言,但不得用封装好的算法函数直接求解;一般不得依赖非标准库(c++可以使用stl,不可使用boost库),特殊情况需在实验报告中予以说明。
实验报告:解题思路;所实现算法的时间复杂度分析(结合程序统计关键步骤运行次数,以验证分析结果);程序运行指导,包括程序编译说明、输入输出示例等。如果输入、输出信息较多,建议采用文件进行格式化输入、输出。
一题多解:在实现基础要求之外,鼓励一题多解,可酌情加分。请在实验报告中进行分析说明。
评分说明:程序和实验报告等重要,综合得到本题分数,评分要点如下
程序:程序正确性(至少实现对n*n棋盘的处理)、注释完整性、关键函数的通用性、程序使用的方便性、边界处理等。
实验报告:解题思路正确性与描述清晰、时间复杂度分析的正确性与完整性、运行指导的质量等。
匿名:提交的所有内容保持匿名性,泄露个人信息将被扣分。
抄袭与迟交:发现抄袭或雷同,抄袭者或雷同双方本次作业记0分。截止时间前可更新作业,包括一题多解;截止时间后不再接受一题多解。