解决方法: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 ;
}

【C++小白成长撸】--N阶幻方(魔阵)矩阵的更多相关文章

  1. 【C++小白成长撸】--(续)双偶数N阶魔阵

    原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从 ...

  2. 【C++小白成长撸】--(续)单偶数N阶魔方矩阵

    1 /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights reserved. **文件名:单偶数N阶魔方矩阵 **程序作用:单偶数N阶魔 ...

  3. 任意阶幻方(魔方矩阵)C语言实现

    魔方又称幻方.纵横图.九宫图,最早记录于我国古代的洛书.据说夏禹治水时,河南洛阳附近的大河里浮出了一只乌龟,背上有一个很奇怪的图形,古人认为是一种祥瑞,预示着洪水将被夏禹王彻底制服.后人称之为&quo ...

  4. 【C++小白成长撸】--矩阵乘法程序

    矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分. 矩阵乘法的原理: 矩阵乘法在代码中实现 得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加 ...

  5. 【ACM小白成长撸】--贪婪法解硬币找零问题

    question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二 ...

  6. 【小白成长撸】--Fibonacci

    /*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:Fibonacci *程序作用:计算菲薄拉稀数列 *作者 ...

  7. 【ACM小白成长撸】--计算单词个数

    我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空 ...

  8. 【小白成长撸】--多项式求圆周率PI

    /*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:多项式求PI *程序作用:计算圆周率PI *作者:Amo ...

  9. 【小白成长撸】--链栈(C语言版)

    // 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...

随机推荐

  1. 3. leetcode 463 Island Perimeter

    思路:设原始周长为4*节点数,每当出现一次相邻的情况,原始周长会减2.

  2. OWASP 之 HTML Injection

    Summary HTML injection is a type of injection issue that occurs when a user is able to control an in ...

  3. Core 2.0 的dll实时更新、https、依赖包变更问题及解决

    今天所有开发环境已经迁移到mac OS下的Visual Studio Code + 命令行编译发布,而运行服务器是CentOS7,和windows没什么关联了. 只要你Relese编译并在本地有一个与 ...

  4. opencv 访问图像像素的三种方式

    访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols ...

  5. SQL 三种基本Join

    Join是关系型数据库系统的重要操作之一,SQL常用Join:内联接.外联接和交叉联接等. 这里讨论一下这常用的三种连接. 测试环境:db2 v10.1, linux 表定义: --用户 CREATE ...

  6. java 分解质因数 基础增强

    题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 为了熟悉加强基础练习,搞搞经典小demo..话不多说,直接贴代码,看注释.package www.test;import j ...

  7. C/C++ 知识点---数组与指针

    数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某些情况下转换为指针,当数组名在表达式中使用时,编译器会把数组名转换为一个指针常量,是数组中的第一个元素的地址,类型 ...

  8. Android 5.1.1在外置SD卡中创建文件夹

    Android 4.4之后WRITE_MEDIA_STORAGE 权限仅提供给系统应用,不再授予第三方App,WRITE_EXTERNAL_STORAGE 权限,仅仅用于授权用户写 primary e ...

  9. selenium的操作JS命令的接口JavascriptExecutor的介绍

    nterface JavascriptExecutor 接口 JS执行器 public interface JavascriptExecutor 表示可以执行JavaScript的驱动程序,提供对机制 ...

  10. webpack打包体积优化

    优化: 1:外部引入模块(cdn)     如 jquery,zepto,d3, bootstrap这些固定的lib 使用cdn直接引用就可以,没有必要打包到build,有效利用302. 2:图标优化 ...