美文网首页
奇数魔方阵

奇数魔方阵

作者: 板混DK | 来源:发表于2017-09-28 12:01 被阅读0次

题目描述:

对于每一个正整数奇数n,输出一个n X n矩阵(奇数阶魔阵), 矩阵元素由1~n平方整数组成, 矩阵的每一行之和、每一列之和、主对角线之和均相等。要求使用动态存储分配。

输入描述:

正整数奇数n

输出描述:

每个阵列中整数占5位,每阵列输出阵列后输出一空行

输入样例:

3

输出样例:

8 1 6
3 5 7
4 9 2
——————————————————————————————————————

分析:

  1. 数字之间的规律
  2. “1”的初始位置

思路:

  1. “1”始终在第一行正中间
  2. 若一个数在第一行,下一个数在最后一行且列数加一
  3. 若一个数在最右侧,下一个数在最左侧且行数加一
  4. 一般情况,下一个数在上一个数右上
  5. 若应填的地方已经有数字或在方阵之外,则下一个数字就填在前一个数字的下方
    (一般地,n+1个数是在n的下方)

代码:

#include <iostream>
#include <cstring>
using namespace std;
void DisplayMatrix (int *A, int n);

int main()
{
    int *A ;
    int  n;
    cin >> n;
    //申请一个n*n个int元素的内存空间并初始化
    A = new int [n*n];
    memset (A, 0, n*n*sizeof (int));

    //开始赋值
    int i, j;
    i = 0; j = n/2;
    for (int r=1;r<=n*n;r++)
    {
        A[i*n+j]=r;
        if (r%n == 0)
        {
            if (i == (n-1)) i=0;
            else i++;
        }
        else
        {
            if (i == 0) i=n-1;
            else i--;

            if (j==(n-1)) j=0;
            else j++;
        }
    }



    //打印方阵归还空间
    DisplayMatrix (A, n);
    delete [] A;
    return 0;

}

void    DisplayMatrix (int *A, int n)
{
    for (int i =0; i <= (n-1); ++i) {
        for (int j = 0; j <= (n-1); ++j) {
            cout.width (5);
            cout << A [i*n+j];
        }
        cout << endl;
    }
}

小结:

  • 注意动态分配使用结束时释放空间
  • memset (A, 0, nnsizeof (int)); 记得初始化数组的格式,即对sizeof(int)的使用
  • 一维数组A[NN]的下标从0到NN-1, 循环中关于 i 和 j 的初始值应从0开始,或者
  • 在必要的地方 -1 ,否则有溢出的风险
  • cout.width (5);
  • void DisplayMatrix (int *A, int n); 申明函数时记得 *A ,使用指针

相关文章

  • 奇数魔方阵

    题目描述: 对于每一个正整数奇数n,输出一个n X n矩阵(奇数阶魔阵), 矩阵元素由1~n平方整数组成, 矩阵的...

  • C语言算法设计之奇数魔方阵

    奇数魔方阵 将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所 示: 算法解...

  • 线性代数和矩阵论

    (Burnside)奇数阶斜对称方阵的行列式恒为零, 而偶数阶斜对称方阵的行列式是一个完全平方. (Minkows...

  • C语言算法设计之奇数魔方阵

    将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所 示: 填魔术方阵的方法以...

  • 《方阵》

    文/陈雄辉 我踟蹰在这方阵里 承受着钢筋水泥的凝固和冰冷 没有一种思路像炊烟一样柔软 没有一种表达像乡愁一样自然 ...

  • 方阵

    白云、丛兰、诗香、菩提、碧漪…… 收获、小窗、眉长、汤河、细雨 甲虫、她她、寒秋、安然、旖旎 枫红、南飞、月明、频...

  • 奇数和偶数的秘密(小学数学)

    1.任意两个奇数的和(或差),一定是偶数。 奇数+奇数=偶数 奇数–奇数=偶数 2.任意两个奇数的积,一定是奇数。...

  • 运动会(原文)

    11月10日星期五,我们学校举行了运动会。 先是走方阵,鲜花方阵,红旗方阵,然后是几个班级的方阵。我在走方阵时忘了...

  • 奇数之和 奇数之和 /打印1-100之间所有奇数之和///保存奇数之和// ...

  • 阿霞-89

    第八十九章:起死回生 夜空下,蝙蝠军团蝠翼相连结成方阵,宛如一条魔毯,蝙蝠兵悬在腰间的短剑...

网友评论

      本文标题:奇数魔方阵

      本文链接:https://www.haomeiwen.com/subject/tpumextx.html