zoukankan      html  css  js  c++  java
  • C生成奇数阶幻方矩阵

    幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。

    // 求取奇数阶幻方矩阵
    // 求取奇数阶幻方矩阵
    #include<stdio.h>
    #define nums 100
    
    int a[nums][nums];
    
    void get_magicsquares(int n)
    {
    
        if(n % 2 == 0) return; //如果是偶数,终止函数
        int i,j;
        i = 1;
        j = (1+n)/2;
        a[i][j] = 1;
        for(int value = 2; value <= n*n; value++){
            i -= 1;     //当前元素,放在之前元素的上一行,右侧一列,有如下几种特殊情况
            j += 1;
            if(i < 1 && j > n){ //如果当前元素在右上角则,存放在前一元素下一行同一列
                i += 2;
                j -= 1;
            }else{
                if(i < 1){     // 如果当前元素是第一行,则将其放在最后一行,前一元素右侧一列
                    i = n;
                }
                if(j > n){      //如果当前元素是最右的一列,则放在第一列,前一元素上一行
                    j = 1;
                }
            }
            if(a[i][j] == 0){   //如果在原来的位置上有值则放在前一元素下一行,同一列
                a[i][j] = value;
            }else{
                i += 2;
                j -= 1;
                a[i][j] = value;
            }
        }
    
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                printf("%d ", a[i][j]);
            }
            printf("
    ");
        }
    
    
    }
    
    int main(int argc, char const *argv[])
    {
        int n;
        scanf("%d", &n);
        get_magicsquares(n);
        return 0;
    }
    
    
  • 相关阅读:
    左划删除
    UILabel 添加图片
    Swift-11-委托模式
    Swift-11-协议(Protocols)
    Swift-10--错误处理
    Swift-09-可空链式调用(Optional Chaining)
    Swift-08-闭包引起的循环强引用
    Swift-07-析构器deinit
    Swift-06-闭包
    【转】HTML5标签使用的常见误区
  • 原文地址:https://www.cnblogs.com/jlxa162hhf/p/14161254.html
Copyright © 2011-2022 走看看