zoukankan      html  css  js  c++  java
  • 奇阶魔方阵

    对奇阶魔方阵,可用Dole Rob算法生成,其过程为:从1开始,以此插入各自然数,直到N*N为止。选择插入位置原则为:

    a.    第一个位置在第一行的正中;

    b.    新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如超出右边界则新边界取应选行的最左一个位置;

    c.    若最近一个插入元素为N的整数倍,则选下面一行同列的位置为新位置。

    实现代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    #define SIZE 100
    
    //魔法阵
    void Magic()
    {
        int m[SIZE+1][SIZE+1];
        int n;
        int value=1;
        int col,row;
        printf("请输入魔方阵的阶数n,n为奇数且n<=%d;n=",SIZE);
        scanf("%d",&n);
    
        if(!(n%2)||n<1||n>SIZE)
        {
            printf("输入有误!
    ");
            return ;
        }
        row=1;
        col=(n+1)/2;
        while(value<=n*n)
        {
            m[row][col]=value;
            if(value%n)
            {
                row--;
                col++;
                if(row<1) row=n;
                if(col>n) col=1;
            }
            else 
                row++;
            value=value+1;
        }
    
        for (int i = 1; i < n+1; i++)
        {
            for (int j= 1; j < n+1; j++)
                printf("%5d",m[i][j]);
            printf("
    ");
        }
    }

    实现的很巧妙!

  • 相关阅读:
    对流程和规范的思考
    我的一小时面试指南
    安全扫描工具nikto简单使用
    测试的角色
    测试的窘境
    关于重连测试的一点研究
    ETCD高可用特性学习
    Cgroup和Namespace在测试中的使用(下)
    单循环列表的删除前驱结点
    指针常量字符串
  • 原文地址:https://www.cnblogs.com/lufangtao/p/3337213.html
Copyright © 2011-2022 走看看