【C++小白成长撸】--(续)双偶数N阶魔阵
原理:
- 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4)
- 每个魔阵的对角线都标为“-1”,其余位置标为“0”
- 从第一个位置(a[0][0])从左到右,从上到下(例如:a[0][0],a[0][1]……a[0][3],a[1][0])用自然数(从1开始)依次填充,每次填充数加一,遇到-1,跳过,但自然数继续计数
- 当第三步全部完成后,从最下面一个位置(a[3][3]),从右到左,从下到上,计数从1开始,每次填充数加一,遇到填充了的位置,跳过,但自然数继续计数。
4阶魔阵示意图

/*程序的版权和版本声明部分:
**Copyright(c) 2016,电子科技大学本科生
**All rights reserved.
**文件名:双偶数N阶魔阵
**程序作用:双偶数N阶魔阵
**作者:Amoshen
**完成日期:2016.10.31
**版本号:V1.0
*/
#include <iostream> using namespace std; #define MAX_SIZE 100 int main(void)
{
int N,k,i,j,m1,m2,c = ;//j,m1 m2,j代表行和列
int magic[MAX_SIZE][MAX_SIZE] = {},b[MAX_SIZE][MAX_SIZE] = {};//0代表没有数字 cout << "本程序实现双偶数N阶幻方矩阵,n = 4K.例如,如果要得到4阶幻方,请输入1"<<endl;
cout << "k = ";
cin >> k; N = * k; //标识对角线不为空,用-1代表
for(m1 = ;m1 <= k;m1++)
{
for(m2 = ;m2 <= k;m2++)
{
for(i = * (m1 - ),j = * (m2 - );i < (*m1);)
{
b[i][j] = -;
i = i + ;
j = j + ;
}
for(i = * (m1 - ) + ,j = * (m2 - );j < ( * m2);)
{
b[i][j] = -;
i = i - ;
j = j + ;
}
}
} //填充魔方矩阵 for(i = ;i < N;i++)
{
for(j = ;j < N;j++,c++)
{
if(b[i][j] == -)
{
continue;
}
else
{
magic[i][j] = c;
}
}
} c = ; for(i = (N - );i >= ;i--)
{
for(j = (N - );j >= ;j--,c++)
{
if(b[i][j] == )
{
continue;
}
else
{
magic[i][j] = c;
}
}
} //输出 cout << N <<"阶幻方矩阵:"<<endl; for(i = ;i < N;i++)
{
for(j = ;j < N;j++)
{
cout << magic[i][j] << '\t';
} cout << endl;
}
}
【C++小白成长撸】--(续)双偶数N阶魔阵的更多相关文章
- 【C++小白成长撸】--(续)单偶数N阶魔方矩阵
1 /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights reserved. **文件名:单偶数N阶魔方矩阵 **程序作用:单偶数N阶魔 ...
- 【C++小白成长撸】--N阶幻方(魔阵)矩阵
解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时 ...
- 【C++小白成长撸】--矩阵乘法程序
矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分. 矩阵乘法的原理: 矩阵乘法在代码中实现 得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加 ...
- 【ACM小白成长撸】--贪婪法解硬币找零问题
question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二 ...
- 【小白成长撸】--Fibonacci
/*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:Fibonacci *程序作用:计算菲薄拉稀数列 *作者 ...
- 【ACM小白成长撸】--计算单词个数
我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空 ...
- 【小白成长撸】--多项式求圆周率PI
/*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:多项式求PI *程序作用:计算圆周率PI *作者:Amo ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
随机推荐
- ASP.NET Core 源码学习之 Logging[2]:Configure
在上一章中,我们对 ASP.NET Logging 系统做了一个整体的介绍,而在本章中则开始从最基本的配置开始,逐步深入到源码当中去. 默认配置 在 ASP.NET Core 2.0 中,对默认配置做 ...
- [补档]暑假集训D3总结
考试 集训第一次考试,然而- - 总共四道题,两道打了DFS,一道暴力,一道~~输出样例~~乱搞,都是泪啊- - 目前只改了三道,回头改完那道题再上题解吧- - T2 [Poi2010]Monot ...
- python教程6-2:字符串标识符
标识符合法性检查. 1.字母或者下划线开始. 2.后面是字母.下划线或者数字. 3.检查长度大于等于1. 4.可以识别关键字. python35 idcheck.py idcheck.py impo ...
- Solr6.5配置中文分词器
Solr作为搜索应用服务器,我们在使用过程中,不可避免的要使用中文搜索.以下介绍solr自带的中文分词器和第三方分词器IKAnalyzer. 注:下面操作在Linux下执行,所添加的配置在windo ...
- react - 解刨组件的多种写法
一,原始的createClass写法 对于写react组件,很多人第一印象往往是createClass,这是因为createClass是react组件最原始的写法,基本每个学react的人都是接触这种 ...
- linux忘记密码/修改密码
方法一:用set password命令 首先,登陆mysql ? 1 mysql -u root -p 然后执行set password命令 ? 1 set password for root@loc ...
- 关于ftp出现425错误
在centos上搭建一个ftp,一切都配置好之后,我去访问时仍然会出现425 Failed to establish connection.这个错误,经过一番查找,原来是这个 -A INPUT -j ...
- 【转】VLAN原理详解
1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.V ...
- Python正则匹配
使用Re模块 首先生成一个匹配模式pattern,如pattern='.test' 然后使用re.match(pattern,str)或者search()匹配调用 match跟search的区别: m ...
- 设计模式,Let's Go! (上)
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...