数据结构实验报告-魔方阵.doc

数据结构实验报告-魔方阵.doc

ID:57837525

大小:194.00 KB

页数:6页

时间:2020-03-31

数据结构实验报告-魔方阵.doc_第1页
数据结构实验报告-魔方阵.doc_第2页
数据结构实验报告-魔方阵.doc_第3页
数据结构实验报告-魔方阵.doc_第4页
数据结构实验报告-魔方阵.doc_第5页
资源描述:

《数据结构实验报告-魔方阵.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构与程序设计实验实验报告课程名称数据结构与程序设计实验课程编号0906550实验项目名称魔方阵学号年级姓名专业计算机科学与技术学生所在学院计算机学院指导教师杨静实验室名称地点21B276哈尔滨工程大学实验报告三实验课名称:数据结构与程序设计实验实验名称:魔方阵班级学号姓名时间2016.04.14一、问题描述魔方阵是一个古老的智力问题,它要求在一个m×m的矩阵中填入1~m的数字(m为奇数),使得每一行、每一列、每条对角线的累加和都相等,如下图所示。五阶魔方阵示例1581241716147523222013643212912

2、1092251811二、数据结构设计本实验使用二维数组作为数据结构三、算法设计1.奇魔方(阶数n=2*m+1,m=1,2,3……)规律如下:  (1).数字1位于方阵中的第一行中间一列;  (2).数字a(1

3、阵。(1).由1开始填数,将1放在第0行的中间位置。(2).将魔方阵想象成上下、左右相接,每次往左上角走一步,会有下列情况:a.左上角超出上方边界,则在最下边相对应的位置填入下一个数字;b.左上角超出左边边界,则在最右边相应的位置填入下一个数字;c.如果按上述方法找到的位置已填入数据,则在同一列下一行填入下一个数字。(3).以3×3魔方阵为例,说明其填数过程,如下图所示。三阶魔方阵的生成过程由三阶魔方阵的生成过程可知,某一位置(x,y)的左上角的位置是(x-1,y-1),如果x-1≥0,不用调整,否则将其调整为x-1+m;同理

4、,如果y-1≥0,不用调整,否则将其调整为y-1+m。所以,位置(x,y)的左上角的位置可以用求模的方法获得,即:x=(x-1+m)%my=(y-1+m)%m如果所求的位置已经有数据了,将该数据填入同一列下一行的位置。这里需要注意的是。此时的x和y已经变成之前的上一行上一列了,如果想变回之前位置的下一行同一列,x需要跨越两行,y需要跨越一列,即:x=(x+2)%my=(y+1)%m3.程序实现(1).输入魔方阵阶数并判断intn;for(;;){printf("请输入魔方阵的阶数(为奇数且大于0小于100):");scanf(

5、"%d",&n);if(n%2!=0&&n>0&&n<100)break;elseprintf("输入错误,请重新输入.");}(2).根据算法构造魔方阵inta[100][100];for(inti=0;i

6、[y]=k;}}(3).输出结果for(inti=0;iin

7、tmain(){intn;for(;;){printf("请输入魔方阵的阶数(为奇数且大于0小于100):");scanf("%d",&n);if(n%2!=0&&n>0&&n<100)break;elseprintf("输入错误,请重新输入.");}//构造魔方阵inta[100][100];for(inti=0;i

8、%n;if(a[x][y]==0)a[x][y]=k;else{x=(x+2)%n;y=(y+1)%n;a[x][y]=k;}}for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。