专栏首页小六奇数阶魔方阵

奇数阶魔方阵

印"魔方阵"。所谓"魔方阵"是指这样的方阵,它的每一行、每一列以及对角线之和均相等。例如,三阶魔方阵为: 8   1   6 3   5   7 4   9   2 要求打印由1到n*n的奇数构成的魔方阵。(魔方阵.C)     分析:魔方阵中各数的排列规律如下: (1) 将"1"放在第一行中间一列; (2) 从"2"开始直到n*n止各数依次按下列规则存放:每一个数存放的     行比前一个数的行数减1,列数加1; (3) 如果上一数的行数为1,则下一数的列数为n(指最下一行); (4) 当上一个数的列数为n时,下一个数的列数应为1,行数减1; (5) 如果按上面规则确定的位置上已有数,或上一个数是第一行第n列

    时,则把下一个数放在上一个数的下面.

#include <stdio.h>

int main(void)
{
	static int a[21][21], i, j, n;
	int k;

	scanf("%d", &n);
	j = n / 2 + 1; i = 1;
	a[i][j] = 1; 	
	for (k = 2; k <= n * n; k++)
	{
		if ((a[i - 1][j + 1] != 0) || (i - 1 == 0) && (j + 1 == n + 1))
		{
			j; i += 1;
		}
		else
		{
			i--; j++;
			if (i == 0) i = n;
			if (j == n + 1) j = 1;
		}
		a[i][j] = k;
	}
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
			printf("%d\t", a[i][j]);
		printf("\n");
	}
	return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 左旋方阵

    在屏幕上输出一个n阶方阵(1<=n<=20)的右旋方阵,方阵的元素由1..n^2组成,排列由外向 内,顺时针方向旋转. 如下是...

    lop
  • 冒泡排序和选择排序

    lop
  • 右旋方阵

    lop
  • 分享一个shell脚本用于“基于已安装的rpm包,创建tar压缩包”

    有时候,我们不想在系统中安装rpm包,但是又需要这个rpm包的功能,那么可否实现呢? 这个需求是可以实现的,当我们用tar包去安装这个功能的时候就可以实现了....

    qsjs
  • 【CCF】线性分类器

    本质就是计算点到直线的距离(只不过分子不加绝对值),根据距离公式分母恒大于零不必考虑,分子

    喜欢ctrl的cxk
  • 创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法?

    问题:为什么创建A对象的时候父类会调用子类方法? 但是:创建B对象父类会调用父类的方法?

    zhangheng
  • 提升python项目完成效率的调试方法技巧(上)

    效率提升是极为重要的事情,我们的时间本来就不充裕,不应该过多将时间浪费在调试过程中。对于大型项目光有dubug是不够的,如果需要提高产品调试进度,必须需要采取一...

    OLDPAN
  • Java面试集合(四)

    JVM是Java虚拟机,是Java跨平台的重要保障,JVM实现Java跨平台的前提,可以针对不同的操作系统,有不同的JVM。

    达达前端
  • BZOJ2199: [Usaco2011 Jan]奶牛议会(2-SAT)

    Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会。议会以“每头牛 都可以获得自己想要的”为原则,建立了下...

    attack
  • LeetCode 140 Word Break II

    [LeetCode 140. Word Break II](https://leetcode.com/problems/word-break-ii/descri...

    ShenduCC

扫码关注云+社区

领取腾讯云代金券