java算法实现输出任意奇数维数独

----------- android培训、java培训、java学习型技术博客、期待与您交流! -----------

/**
该类可以打印任意维数数独,但是必须是奇数维数
@author 传智播客 java1208-66#
*/
class ShuDuDemo//测试数独
{public static void main(String[] args) {ShuDu sd1=new ShuDu(3);//测试打印三维数独sd1.run();System.out.println("------------------------");ShuDu sd2=new ShuDu(5);//测试打印五维数独sd2.run();System.out.println("------------------------");ShuDu sd3=new ShuDu(7);//测试打印7维数独sd3.run();System.out.println("------------------------");ShuDu sd4=new ShuDu(9);sd4.run();System.out.println("------------------------");}
}
/**
自定义的数独类,可以计算出所有排列的任意奇数维数数独
将数独封装成一个对象,同过构造器来创建任意奇数维的数独对象
*/
class ShuDu//打印3*3的数独
{private int radius;//定义基数//构造器public ShuDu(int radius){this.radius=radius;    }private  void init(int[][] arr)//初始化数组,使默认值为0{for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){arr[i][j]=0;}}}public  void run()//接受一个维数,一定要为奇数{int[][] arr=new int[radius][radius];init(arr);int x=0,y=0;//定义x,y作为二维数组的脚标int tar=1;//定义应该填入的数字大小,从1开始x=0;y=radius/2;tar=1;//初始化init(arr);//初始化arr[x][y]=tar++;while(tar<=radius*radius){int tempx=x;int tempy=y;x=x+2>radius-1?x+2-radius:x+2;//x=x+2,并作出越界处理y=y+1>radius-1?y+1-radius:y+1;//y=y+1,并作出越界处理if(arr[x][y]==0){arr[x][y]=tar++;}else{x=tempx+1>radius-1?tempx+1-radius:tempx+1;y=tempy;arr[x][y]=tar++;}}show(arr);System.out.println("------------------------");}private void show(int[][] arr)//打印数组{System.out.println("打印 "+ radius+"*"+radius+" 数独:");for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
测试结果:
打印 3*3 数独:
8   1   6
3   5   7
4   9   2
------------------------
------------------------
打印 5*5 数独:
23  12  1   20  9
4   18  7   21  15
10  24  13  2   16
11  5   19  8   22
17  6   25  14  3
------------------------
------------------------
打印 7*7 数独:
46  31  16  1   42  27  12
5   39  24  9   43  35  20
13  47  32  17  2   36  28
21  6   40  25  10  44  29
22  14  48  33  18  3   37
30  15  7   41  26  11  45
38  23  8   49  34  19  4
------------------------
------------------------
打印 13*13 数独:
163 136 109 82  55  28  1   156 129 102 75  48  21
8   150 123 96  69  42  15  157 143 116 89  62  35
22  164 137 110 83  56  29  2   144 130 103 76  49
36  9   151 124 97  70  43  16  158 131 117 90  63
50  23  165 138 111 84  57  30  3   145 118 104 77
64  37  10  152 125 98  71  44  17  159 132 105 91
78  51  24  166 139 112 85  58  31  4   146 119 92
79  65  38  11  153 126 99  72  45  18  160 133 106
93  66  52  25  167 140 113 86  59  32  5   147 120
107 80  53  39  12  154 127 100 73  46  19  161 134
121 94  67  40  26  168 141 114 87  60  33  6   148
135 108 81  54  27  13  155 128 101 74  47  20  162
149 122 95  68  41  14  169 142 115 88  61  34  7
------------------------
------------------------

黑马程序员---java算法实现输出任意奇数维数独相关推荐

  1. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  2. 黑马程序员Java零基础视频教程_上部(P1-P80)

    黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...

  3. 黑马程序员——Java字符流、字节流IO流

    黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...

  4. 黑马 程序员——Java基础---IO(下)

    黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...

  5. 2023年黑马程序员Java学习路线图

    2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...

  6. 黑马程序员 JAVA WEB 第三节 MYSQL 约束

    这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记.希望可以帮助跟我一样正在学习Java web的同学们.我们一起进步.   b_d 若果有同学也想学习黑马程序员Java w ...

  7. 黑马程序员Java零基础视频教程_下部(P52-P134)

    黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...

  8. 黑马程序员Java零基础视频教程_下部(P135-P200)

    黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...

  9. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

最新文章

  1. Matlab数据的可视化 -- 简易线性函数图
  2. java 创建5个线程_Java创建线程的三种方式
  3. c语言输运方程1001无标题,粒子输运方程确定论计算手段.pdf
  4. 转 -- 推荐几本云计算的经典书籍
  5. 【python】装饰器
  6. 数字范围按位与Python解法
  7. recyclerview 加载fragment_恢复 RecyclerView 的滚动位置
  8. Swift 优雅的打印Log
  9. 程序员们记得还是八五年PC登陆我国时候的事?
  10. rpm 安装、卸载软件命令 ——以nginx为例
  11. mysql存储过程之循环
  12. E001检测到您的环境不支持HTML5,艾默生CT变频器多见毛病代码及修补办法
  13. c语言在线考试系统的需求分析,在线考试系统需求分析.doc
  14. Flask Swagger 文档自动生成
  15. lightoj1224 DNA Prefix
  16. android 4.4 x86 iso,android x86官方版下载_android x86 4.4 iso 官方最新版[网盘资源]_零度软件园...
  17. 第五代人工智能计算机英语,计算机专业英语——关于第五代计算机
  18. 认识植物 - 水杉 (比较常见的濒危植物)
  19. 快速准时安全放心,顺丰黄金派送服务受认可
  20. 刘强东牛津大学经典演讲:我人生的4个关键抉择,都是怎么做的?

热门文章

  1. 通过chrome应用商店安装vue调试工具
  2. 谷歌云端硬盘下载文件_如何为Google云端硬盘上的文件创建共享下载链接
  3. 微信如何定时发朋友圈?一招教你解决
  4. 毕业论文开题报告模板
  5. 【seaborn】jointplot 改变图片长宽比,非方形
  6. 【原创】OpenDDS笔记(一) Windows环境下的开发实例
  7. 标准柯西分布_柯西分布没有数学期望
  8. Mathematica学习(2)-mathematica命令
  9. android 横屏录制视频,MediaRecorder怎么在竖屏的时候录像结果是横屏录的结果
  10. pytorch 支持amd显卡吗_AMD平台上配置PyTorch+Apex开发环境