• 九宫格填法规律--奇数


    奇数幻方构造方法:
    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正常状态

  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/pilihaotian/p/8823197.html
Copyright © 2020-2023  润新知