zoukankan      html  css  js  c++  java
  • n阶魔方阵(c++)

    魔方阵:

    1. 它是一个方阵
    2. 它的每一行、每一列、对角线之和均相等

    列如:三阶魔方阵

    8   1   6
    3   5   7
    4   9   2
    

    魔方阵算法:

    1. 数字1位于第一行的正中间
    2. 下一个数放到上一个数的右上角(即上一行下一列),若无上一行则放到最后一行,若无下一列则放到第一列
    3. 若新位置已经放了数,则将其放入上一个数的正下方(即下一行的同一列)
    4. 重复第2、3步

    代码

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
        int i, j, i1, j1, n, p, d[16][16];
        cout << "请输入阶数(必须是奇数):";
        while(1)//控制输入的阶数
        {
            cin >> n;
            if( n<1 || n>10 ) continue;
            if( n>1 && n%2!=0 ) break;
        }
    
        for(i=1;i<n+1;++i)//数组初始化全为0
            for(j=1;j<n+1;++j)
                d[i][j]=0;
    
        i=1;
        j=n/2+1;
        d[i][j]=1;//1位于第一行的正中间
    
        for(p=2;p<=n*n;++p)//数字2、3、……、n*n的摆放
        {
            //上一行,下一列
            i1=i;
            j1=j;
            i--;
            j++;
    
            //可能的三种情况
            if(i==0) i=n;//没有上一行的处理措施
            if(j>n) j=1;//没有下一列的处理措施
            if(d[i][j]!=0) {i=i1+1;j=j1;}//新位置已经放了数的处理措施
    
            d[i][j]=p;//摆放
        }
    
        for(i=1;i<n+1;++i)//输出魔方阵
        {
            for(j=1;j<n+1;++j)
                cout<<setw(3)<<d[i][j];
            cout<<endl;
        }
    
        return 0;
    }
    
  • 相关阅读:
    js模板引擎v5
    js模板引擎v6
    python cookbook学习笔记[一次完成多个字符串的替换]
    您可能没注意到的ie6 select bug
    lambda参数写法问题
    python dict2种遍历方式及区别
    记一次 AXI id debug
    R2B fpga flow script
    axi 1.0
    advanced fpga design
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626182.html
Copyright © 2011-2022 走看看