九宮格填法規律--奇數


奇數幻方構造方法:
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]+"\t");
36             }
37             System.out.println();
38         }
39     }
40 
41 }

分五類討論:

1最右上角一種

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

3最右邊一列(同樣不包括最右上角的那一個)

4右上角占用

5正常狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM