zoukankan      html  css  js  c++  java
  • 九宫格填法规律--奇数

    奇数幻方构造方法:
    1)在N*N的第一行中间插入1
    2)在插入数据1的的位置的右上方插入数据2,若出边框,即在1的上边框,则2的插入位置是向下移动N个位置
    3)在插入数据2的右上方插入数据,若出右边框,则向左移动N个位置,插入3
    4)下面的插入数据都是在上一个插入数据的右上角插入,若右上角出了上边框,则向下移动N个位置;若右上角位置出了右边框,则向左移动N个位置;若右上角已经被占,则下一个数的位置是上一个数位置的下面;若右上角是整个N*N的最右边,且被占,则下个插入位置在最右边位置的下面位置。
    如下图:
     
    代码如下:
     1 package day4;
     2 
     3 public class jiugongge {
     4 
     5     public static void main(String[] args) {
     6         int N = 7;//n为奇数
     7         int [][]a = new int[N][N];
     8         for (int i = 0; i < N; i++) {
     9             for (int j = 0; j < N; j++) {
    10                 a[i][j]=0;
    11             }
    12         }
    13         int i = 0,j = (N-1)/2;
    14         for (int n = 1; n <= N*N; n++) {
    15             a[i][j] = n;
    16             if (i==0&&j==N-1&&a[i][j]!=0) {
    17                 i++;
    18             }else if (i==0&&j>=0&&j<N-1) {
    19                 i=N-1;
    20                 j++;
    21             }else if (i>0&&i<=N-1&j==N-1) {
    22                 j=0;
    23                 i--;
    24             }else if (a[i-1][j+1]!=0) {
    25                 i++;
    26             }else {
    27                 j++;
    28                 i--;
    29             }
    30         }
    31         
    32         
    33         for (int ii = 0; ii < N; ii++) {
    34             for (int jj = 0; jj < N; jj++) {
    35                 System.out.print(a[ii][jj]+"	");
    36             }
    37             System.out.println();
    38         }
    39     }
    40 
    41 }

    分五类讨论:

    1最右上角一种

    2最上面一行(不包括最右上角的那一个)

    3最右边一列(同样不包括最右上角的那一个)

    4右上角占用

    5正常状态

  • 相关阅读:
    Week14 作业 C
    Week13 作业 E
    Week9 作业 C
    Week9 作业 B
    Week9 作业 A
    Week13 作业 C
    Week13 作业 B
    Week13 作业 A -CodeForces
    css--轮播图 yk弹框--固定定位和层级的应用
    css--定位
  • 原文地址:https://www.cnblogs.com/pilihaotian/p/5228127.html
Copyright © 2011-2022 走看看