解决方法:1.第一个元素放在第一行中间一列

     2.下一个元素存放在当前元素的上一行、下一列。

     3.如果上一行、下一列已经有内容,则下一个元素的存放位置为当前列的下一行。

在找上一行、下一行或者下一列的时候,必须把这个矩阵看成是回绕的。

代码中,为了判断,当前位置是否有元素,我引入与魔方矩阵规模相同的另一个矩阵,如果魔方矩阵一个位置不为空,相应另一个矩阵那个位置为1,否则为0.

 /*程序的版权和版本声明部分:
**Copyright(c) 2016,电子科技大学本科生
**All rights reserved.
**文件名:N阶魔方矩阵
**程序作用:N阶魔方矩阵
**作者:Amoshen
**完成日期:2016.10.27
**版本号:V1.0
*/
#include <iostream> using namespace std; #define MAX_SIZE 100 int main(void)
{
int ROW,CIE,i,j,N,ROW1,CIE1;
int MAGIC[MAX_SIZE][MAX_SIZE] = {};
int b[MAX_SIZE][MAX_SIZE] = {}; cout <<"N阶中N只能是奇数!! warning" <<endl;
cout << "输入魔阵阶数N:";
cin >> N;
//实现魔阵的填充 ROW = ;
CIE = (N - )/; MAGIC[ROW][CIE] = ;
b[ROW][CIE] = ; for(i = ;i <= (N*N);i++)//
{
ROW1 = ROW - ;
CIE1 = CIE + ; if(ROW1 < )
{
ROW1 = N - ;
}
if(CIE1 > (N - ))
{
CIE1 = ;
} if(b[ROW1][CIE1] == )
{
ROW = ROW1;
CIE = CIE1;
MAGIC[ROW][CIE] = i;
b[ROW][CIE] = ;
}
else
{
ROW = ROW + ;
if(ROW == N)
{
ROW = ;
}
MAGIC[ROW][CIE] = i;
b[ROW][CIE] = ;
}
} cout << "N阶魔阵的输出实现:" <<endl;
//N阶魔阵的输出实现
for(i = ;i < N;i++)
{
for(j = ;j < N;j++)
{
cout << MAGIC[i][j] << '\t';
}
cout << endl;
} return ;
}

最新文章

  1. 03 Apache Solr: 安装和运行
  2. Nginx状态码499
  3. 【bzoj3624】【apio2008】免费道路
  4. linux下如何设置vip(虚拟ip)
  5. SAP SD你要知道的透明表
  6. res/drawable目录下图片的Uri
  7. Hibernate简介2
  8. Spring源码入门——DefaultBeanNameGenerator解析
  9. 禁止选择文本和禁用右键 v1.0
  10. usaco 安慰奶牛
  11. 2.2 文件 I/O 的基石:Path
  12. SqlConnection类
  13. HDU 5455 Fang Fang 水题,但题意描述有问题
  14. javascript模拟鼠标双击事件
  15. Python的数据类型——字符串
  16. POJ 1556 The Doors(线段相交+最短路)
  17. face++静态库转为动态库
  18. linux 查看系统负载:uptime
  19. XGBoost介绍
  20. jQuery自己定义绑定的魔法升级版

热门文章

  1. PDF修改器
  2. git分支管理之创建与合并分支
  3. Java位操作
  4. js验证15位或18位身份证
  5. java大数常用的方法
  6. 日本語の文法⇒ day1 限る型…意向形の紹介
  7. 【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发
  8. ECMAScript6-let与const命令详解
  9. Node.js 入门简介
  10. ThinkSNS+ alpha.2 版本发布,功能抢先看!【社交系统研发日记六】