n阶幻方c语言编程,求单偶阶与双偶阶幻方编程思想及其算法!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define N 100
void oujie(int oushu)
{
int a[N][N]={0},i,j,k=1,n,m;
n=oushu/2;
m=(oushu-2)/4;
for(i=1,j=3*n/2;k<=n*n;)
{
if(i<0)
{ i=i+3*n; continue; }
if(j>=3*n)
{ j=j-3*n; continue; }
if(j<0)
{ j=j+3*n; continue; }
if(a[i][j]!=0)
{
i=i+2*3;
j=j-1*3;
if(i>3*n)
{ i=i-3*n; continue; }
if(j<0)
{ j=j+3*n; continue; }
}
a[i][j]=k++;
i=i-3;
j=j+3;
}
for(i=1;i<3*n;i=i+3)
for(j=1;j<3*n;j=j+3)
{
if(i
a[i-1][j]=1;
else if(i==(3*(m+1)+1)&&j!=(3*(m+1)-2)||i==(3*(m+1)-2)&&j==(3*(m+1)-2))
a[i-1][j]=2;
else a[i-1][j]=3;
}
for(i=1;i<3*n;i=i+3)
for(j=1;j<3*n;j=j+3)
{
if(a[i-1][j]==1)
{
a[i-1][j-1]=4*a[i][j];
a[i-1][j+1]=4*a[i][j]-3;
a[i+1][j-1]=4*a[i][j]-2;
a[i+1][j+1]=4*a[i][j]-1;
}
if(a[i-1][j]==2)
{
a[i-1][j-1]=4*a[i][j]-3;
a[i-1][j+1]=4*a[i][j];
a[i+1][j-1]=4*a[i][j]-2;
a[i+1][j+1]=4*a[i][j]-1;
}
if(a[i-1][j]==3)
{
a[i-1][j-1]=4*a[i][j]-3;
a[i-1][j+1]=4*a[i][j];
a[i+1][j-1]=4*a[i][j]-1;
a[i+1][j+1]=4*a[i][j]-2;
}
}
for(i=0;i<3*n;i=i+1)
{
{
for(j=0;j<3*n;j=j+1)
{
printf("%4d",a[i][j]);
j=j+2;
printf("%4d",a[i][j]);
}
printf("\n");
}
i=i+2;
{
for(j=0;j<3*n;j=j+1)
{
printf("%4d",a[i][j]);
j=j+2;
printf("%4d",a[i][j]);
}
printf("\n");
}
}
}
void jijie(int n)
{
int a[N][N]={0},i,j,k=1;
for(i=0,j=n/2;k<=n*n;)
{
if(i<0)
{ i=i+n; continue; }
if(j>=n)
{ j=j-n; continue; }
if(j<0)
{ j=j+n; continue; }
if(a[i][j]!=0)
{
i=i+2;
j=j-1;
if(i>n)
{ i=i-n; continue; }
if(j<0)
{ j=j+n; continue; }
}
a[i][j]=k++;
i--;
j++;
}
for(i=0;i
{
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
}
}
main()
{
int n;
printf("偶数阶数为4n+2,且阶数为3到66之间\n");
printf("请输入幻方的阶数:");
scanf("%d",&n);
if(n%2==0&&n>=4&&n<66&&(n-2)%4==0)
oujie(n);
else if(n%2==1&&n<66)
jijie(n);
else
printf("错误的阶数!\n");
n阶幻方c语言编程,求单偶阶与双偶阶幻方编程思想及其算法!相关推荐
- 计算机编程求最大公约数与最小公倍数,这是一个常见的简单算法
计算最大公约数和最小公倍数是简单常见的算法,他有多种方式实现,比如:穷举法.辗转相除法.相减法等等,方法很多,目的相同,下面就用其中一种方法,辗转相除法来完成这个算法,下面将用计算机编程的方式实现. ...
- n阶换方c语言程序,求单偶阶与双偶阶幻方编程思想及其算法!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define N 100 void oujie(int oushu) { int a[N][N]={0},i,j,k=1,n,m; n ...
- JAVA编程求单源最短路径_【算法】单源最短路径——dijkstra算法
一,概念 单源最短路径 给定一个带权有向图G=(V,E),其中每条边的权是一个实数.另外,还给定V中的一个顶点,称为源.要计算从源到其他所有各顶点的最短路径长度.这里的长度就是指路上各边权之和.这个问 ...
- 魔方阵(奇数,单偶,双偶)
目录 一.奇数 二.双偶 三.双偶 魔方阵,是指组成元素为自然数1.2.-.n2的平方的n×n的方阵,其中每个元素值都不相等,且每行.每列以及主.副对角线上各n个元素之和都相等. 魔方阵的规律 一.奇 ...
- 双偶幻方的c语言算法,单偶阶、双偶阶幻方的巧妙填法
单偶阶.双偶阶幻方的巧妙填法 单偶阶.双偶阶幻方的巧妙填法 人气:150 ℃时间:2019-12-07 19:18:09 优质解答 一.双偶幻方的解法 能被4整除的n阶幻方叫双偶幻方,如8阶.12阶. ...
- c语言编程所得票数,C语言编程求1X2X3····Xn所得的数末尾有多少个零
C语言编程求1X2X3····Xn所得的数末尾有多少个零 发布时间:2020-08-10 02:23:57 来源:51CTO 阅读:312 作者:sonissa 参见大数的阶乘 https://blo ...
- python输入一个英文句子、统计单词个数_C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词。c++编程 从键盘输入一个英文...
C语言编程求一个英文句子中的单词数和最长单词的位置.长度及输出这个单词. c++编程 从键盘输入一个英文 www.zhiqu.org 时间: 2020-11-23 我刚做了一关于英文句子里面每 ...
- c语言链表交换,求单链表的数据交换解决思路
当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net 网友分享于:2013-11-04 浏览:14次 求单链表的数据 ...
- PTA 基础编程题目集 6-6 求单链表结点的阶乘和
PTA 基础编程题目集 6-6 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int Factorial ...
最新文章
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明...
- 【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )
- jsfl 改变舞台宽高
- [scala-spark]11. RDD控制操作
- Python实例--文本词频统计
- 在Centos 7中开放80端口
- mysql基础查询语法
- pandas 转换为文本类型_分享5个高效的pandas函数!
- mysql -f --force_mysqldump备份MYSQL数据库的参数详细说明
- html5 dom api,HTML5 DOM File API
- 例2.5 统计同成绩学生人数 - 九度教程第10题(Hash的应用)
- 【16年浙江省赛H ZOJ 3965】Binary Tree Restoring 【两个dfs序还原】
- 大麦无线虚拟服务器,大麦路由器192.168.10.1设置教程
- 关于 C++ 打印 PDF 打印及 PDF 转图片、合并
- Linux上配置SVN使用http访问
- JAVA:获取用户访问ip地址
- 解决html中手机键盘遮挡input输入框
- 华为HG522-C相框猫配置文件的加解密
- CISP注册信息安全人员证书维持注意事项
- HTML5期末大作业 基于HTML+CSS+JavaScript学校官网首页(实训素材)