zoukankan      html  css  js  c++  java
  • 给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。

    对于N阶幻方,从1开始把数字从小到大按以下规则依次写入:

      一、在第一行中间一列写入1

      二、依次向右上方写入2、3、4......

      三、如果某数字写在了表格的某个方向外面,那就把这个数字向相反方向移动N个单位,把它放入表格内部。例如,某数字

        写在了表格的上方,那就把这个数字向下移动N个单位。

      四、如果某个数字的右上方已经被占用,那就把下一个数字写在这个数字的正下方。  

      五、如果某个数字位于表格的最右上角,那么下一个数字要写在这个数字的正下方(例子中16的写法)

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 void nineGongGe( int n){
     5     vector<vector<int>> a(n,vector<int>(n,0));
     6     int x = 0, y = n/2;
     7     a[x][y] = 1;
     8     for(int i = 2; i<= n*n; ++i){
     9         int xNew = x-1;
    10         int yNew = y+1;
    11         if(yNew > n-1)//右边超出边界往左移
    12             yNew = 0;
    13         if(xNew < 0)//上边超出边界往最下方移
    14             xNew = n-1;
    15         //如果某个数字的右上方已经被占用,那就把下一个数字写在这个数字的正下方
    16         if(a[xNew][yNew] != 0||(x==0&&y==n-1)){
    17             xNew = x+1;
    18             yNew = y;
    19         }
    20         a[xNew][yNew] = i;
    21         x = xNew;
    22         y = yNew;
    23     }
    24     for(int i = 0; i< n; ++i){
    25         for(int j = 0; j < n; ++j){
    26             cout<< a[i][j]<<"	";
    27         }
    28         cout<<endl;
    29     }
    30 }
    31 int main(){
    32     int n;
    33     cin>>n;
    34     nineGongGe(n);
    35     return 0;
    36 }
  • 相关阅读:
    ubuntu14.4开启ftp服务
    ubuntu14.4安装gtx970显卡驱动的艰辛历程
    jquery.dataTables的用法
    win7上安装theano keras深度学习框架
    使用BeanUtils设置属性转换String到Date类型
    keras在win7下环境搭建
    Python-try except else finally有return时执行顺序探究
    MySQL-EXPLAIN用法详解
    PHP-Windows下搭建Nginx+PHP环境
    PHP-php.ini中文版
  • 原文地址:https://www.cnblogs.com/yichengming/p/11145687.html
Copyright © 2011-2022 走看看