1、 信息工程学院 数据结构数据结构 课程设计报告课程设计报告 题题 目:目: 拉丁方阵拉丁方阵 专专 业:业: 软件工程软件工程 班班 级:级: 姓姓 名:名: 学学 号:号: 指导教师:指导教师: 时时 间:间: 1 1 摘 要 拉丁方阵是一种 nn 的方阵,方阵中恰有 n 种不同的元素,每种元 素恰有 n 个,并且每种元素在一行和一列中恰好出现一次。例如下图是 一个 33 的拉丁方阵: 3 2 1 2 1 3 1 3 2 如果一个拉丁方阵的第一行和第一列按照元素的先后顺序来排列, 那么这称为拉丁方阵的标准型,例如下图就是一个 3x3 的拉丁方阵标准 型,第一行和第一列都是”1 2 3” 。
2、1 2 3 2 3 1 3 1 2 编写一个程序读入一个方阵,判断其是否为拉丁方阵;进一步地, 判断是否为标准型。 (1)输入包含多组数据。每组数据第一行为正整数 n,表示方阵的 大小。其后 n 行,每行有 n 个 1 到 n 之间的整数,整数之间恰有一个空 格,表示方阵的内容。输入保证 1n100 输入以 n=0 结束,不要处理 这个数据。 (2)每组数据对应于一行输出。如果输入是拉丁方阵,但不是标准 型则输出 1;如果输入是标准型则输出 2;如果输入不是拉丁方阵则输出 0。 (3) 应用 “数据结构与算法” 课程知识建立该问题的数据结构模型; 关键字:拉丁方阵 ,比较,数据结构与算法 目目
3、 录录 一、课程设计的目的 二、设计方案的论证(背景、意义、技术路线) 三、设计实现过程 四、调试运行及结果分析 五、测试及问题探讨 六、课设总结与体会 . 七、致谢 八、参考文献 九、附录 2 2 一、 课程设计的目的 数据结构课程设计的目的是使同学们能够根据数据对象的特性,合 理的组织数据并能综合运用数据结构与程序设计基本知识解决实际问 题,培养基本的、良好的程序设计技能。 明确题目要求、确定数据的逻辑结构和存储结构;完成核心算法的 设计、编码与调试;准备测试数据,对软件进行测试与调试并撰写课程 设计报告; ,验收及答辩。 通过实践操作,能熟练运用 C 语言实现逻辑结构、存储结构及核心 算
4、法;掌握书写程序设计说明文档的能力和工程软件设计的基本方法。 3 3 二、 设计方案的论证(背景、意义、技术路线) 据说普鲁士的腓特列大帝曾组成一支仪仗队,仪仗队共有 36 名军 官,来自 6 支部队,每支部队中,上校、中校、少校、上尉、中尉、少 尉各一名。他希望这 36 名军官排成 66 的方阵,方阵的每一行,每一 列的 6 名军官来自不同的部队并且军衔各不相同。令他恼火的是,无论 怎么绞尽脑汁也排不成。 后来,他去求教瑞士著名的大数学家欧拉。欧拉发现这是一个不可 能完成的任务。 来自 n个部队的 n种军衔的 nn名军官,如果能排成一个正方形, 每一行,每一列的 n名军官来自不同的部队并且军
5、衔各不相同,那么就 称这个方阵叫正交拉丁方阵。欧拉猜测在 n=2,6,10,14,18, 时,正交拉丁方阵不存在。然而到了上世纪 60 年代,人们用计算机 造出了 n=10 的正交拉丁方阵,推翻了欧拉的猜测。现在已经知道,除 了 n=2,6 以外,其余的正交拉丁方阵都存在,而且有多种构造的方法。 意义:熟悉运用 C 语言实现数据结构的运算 技术路线:工具 WinTC 4 4 三、 设计实现过程 3.1 概要设计 图 3.1-1 开始 判断阶数是否 超出范围 输出方阵 结束 输入方阵阶数 否 是 输入方阵的数字 5 5 图 3.1-2 开始 判 断 第 一行, 列 判 断 每 行数据 方阵 判断每列 数据 输出 结束 6 6 3.2 详细设计 1)定义数组 a100100。 2)输入方阵 for (i=0;in;i+) for(j=0;jn;j+) scanf(“%d“, 输出方阵 for(i=0;in;i+) printf