黑马程序员---java算法实现输出任意奇数维数独
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算法实现输出任意奇数维数独相关推荐
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
- 黑马程序员Java零基础视频教程_上部(P1-P80)
黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...
- 黑马程序员——Java字符流、字节流IO流
黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...
- 黑马 程序员——Java基础---IO(下)
黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...
- 2023年黑马程序员Java学习路线图
2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...
- 黑马程序员 JAVA WEB 第三节 MYSQL 约束
这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记.希望可以帮助跟我一样正在学习Java web的同学们.我们一起进步. b_d 若果有同学也想学习黑马程序员Java w ...
- 黑马程序员Java零基础视频教程_下部(P52-P134)
黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...
- 黑马程序员Java零基础视频教程_下部(P135-P200)
黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
最新文章
- Matlab数据的可视化 -- 简易线性函数图
- java 创建5个线程_Java创建线程的三种方式
- c语言输运方程1001无标题,粒子输运方程确定论计算手段.pdf
- 转 -- 推荐几本云计算的经典书籍
- 【python】装饰器
- 数字范围按位与Python解法
- recyclerview 加载fragment_恢复 RecyclerView 的滚动位置
- Swift 优雅的打印Log
- 程序员们记得还是八五年PC登陆我国时候的事?
- rpm 安装、卸载软件命令 ——以nginx为例
- mysql存储过程之循环
- E001检测到您的环境不支持HTML5,艾默生CT变频器多见毛病代码及修补办法
- c语言在线考试系统的需求分析,在线考试系统需求分析.doc
- Flask Swagger 文档自动生成
- lightoj1224 DNA Prefix
- android 4.4 x86 iso,android x86官方版下载_android x86 4.4 iso 官方最新版[网盘资源]_零度软件园...
- 第五代人工智能计算机英语,计算机专业英语——关于第五代计算机
- 认识植物 - 水杉 (比较常见的濒危植物)
- 快速准时安全放心,顺丰黄金派送服务受认可
- 刘强东牛津大学经典演讲:我人生的4个关键抉择,都是怎么做的?
热门文章
- 通过chrome应用商店安装vue调试工具
- 谷歌云端硬盘下载文件_如何为Google云端硬盘上的文件创建共享下载链接
- 微信如何定时发朋友圈?一招教你解决
- 毕业论文开题报告模板
- 【seaborn】jointplot 改变图片长宽比,非方形
- 【原创】OpenDDS笔记(一) Windows环境下的开发实例
- 标准柯西分布_柯西分布没有数学期望
- Mathematica学习(2)-mathematica命令
- android 横屏录制视频,MediaRecorder怎么在竖屏的时候录像结果是横屏录的结果
- pytorch 支持amd显卡吗_AMD平台上配置PyTorch+Apex开发环境