前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >九宫格填法规律--奇数

九宫格填法规律--奇数

作者头像
leehao
发布2025-02-10 20:08:16
发布2025-02-10 20:08:16
420
举报
文章被收录于专栏:leehaoleehao

奇数幻方构造方法:

1)在N*N的第一行中间插入1

2)在插入数据1的的位置的右上方插入数据2,若出边框,即在1的上边框,则2的插入位置是向下移动N个位置

3)在插入数据2的右上方插入数据,若出右边框,则向左移动N个位置,插入3

4)下面的插入数据都是在上一个插入数据的右上角插入,若右上角出了上边框,则向下移动N个位置;若右上角位置出了右边框,则向左移动N个位置;若右上角已经被占,则下一个数的位置是上一个数位置的下面;若右上角是整个N*N的最右边,且被占,则下个插入位置在最右边位置的下面位置。

如下图:

代码如下:

代码语言:txt
复制
 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正常状态

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档