奇数阶幻方求解数据结构课程设计报告
一、题目 奇数阶幻方求解【问题描述】 幻方是一种很有意思的数字矩阵,在很早著名的九宫八卦阵就与幻方有关。幻方的定义为: 1 到 N*N 的整数填入N*N的方格 中,每行和每列以及对角线的数字之和
一、题目 奇数阶幻方求解 【问题描述】 幻方是一种很有意思的数字矩阵,在很早著名的九宫八卦阵就与幻方有关。幻方的定义 为: 1到 N*N 的整数填入N*N的方格 中,每行和每列以及对角线的数字之和必须是相等 的。 你作为八卦公司的顶级程序员,现在需要你解决一个问题,将任意奇数阶的幻方找出来。 【基本要求】 输入包括多个测试集,每行为一个正奇数N(1 <= N< 1000),0作为输入的结束且不需 要处理 ,对于输入的每一个N, 输出一个它所对应的N阶幻方,如果存在多个,任意一个 即可,每个幻方为N*N的矩阵,对于每个幻方,每行输出幻方的一行,每行中的数字之间用 一个或多个空格分开。不同的幻方之间用一个空行分开。 二、问题分析及任务定义 【问题分析】 1、本程序要求输出奇数N阶幻方,其重点应该就是在求幻方的算法上,我们 可以通过二维数组的方法来定义存储幻方。 2、本程序要输入多个测试集,可通过一位数组来存储,可通过查找算法在测试集中找 出是否有你要的幻方。 【任务定义】 通过对初始化的二维数组值的重新编排,用几个判断语句来实现幻方的输出。 三、数据结构的选择和概要设计 1、采用一个子函数实现测试集的输入,并存储在数组中,同时定义一个数组指针,存 储完成后返回指向该数组的指针。 2、采用另外一个子函数判断你要找的幻方是否在测试集中,形参为1中指向数组的指 针和来自主函数中你要查找的幻方的阶数。如果查找成功返回1,否则返回0; 3、基本操作:int Input() 操作结果:实现测试集的输入,并返回 int Search(int *p,int m) 操作结果:确定你要查找的幻方是否在测试集中,如果在返回1,否则 返回0; Void main() 操作结果:主函数,实现你要幻方的阶数的输入,同时实现幻方初始化后 数据的重新编排,使之成为幻方并输出。

