技术标签: java汉诺塔暂停
1
publicclassHanoi_X8023Z{2/// 3/// 将n个盘从one座借助two座,移动到three座.4/// 5/// 盘子个数6/// 第一个标识座A7/// 第二个标识座B8/// 第三个标识座C9voidhanoi(intn, String one, String two, String three)10
{11if(n==1)12
{13 move(one, three);//从A座移动到C座14}15else16
{17 hanoi(n-1, one, three, two);//将A上n-1个盘借助于C座先移动到B座上18move(one, three);19 hanoi(n-1, two, one, three);//将n-1个盘从B借助于A座移动到C座上20}2122 }2324/// 25/// 并未真正移动盘子,只是打印出移盘的方案26/// 27/// from从哪个座开始移28/// to移动到哪个座29voidmove(String x, String y)30
{31 FormatStr(x+y);32 System.out.println(strA+"\n"+strB+"\n"+strC+"\n");33 }3435//定义三个字符串36privateString strA="0";//A座37privateString strB="0";//B座38privateString strC="0";//C座39privateint_long=5;//初始值4041/// 42/// 格式化字符串43/// 44/// 字符串类型45publicvoidFormatStr(String strType)46
{47 remove0();4849if(strType .equals("AB"))50
{51 strB=strB+strA.substring(strA.length()-1, strA.length());52 strA=strA.substring(0, strA.length()-1);5354 }55elseif(strType .equals("AC"))56
{57 strC=strC+strA.substring(strA.length()-1, strA.length());58 strA=strA.substring(0, strA.length()-1);5960 }61elseif(strType .equals("BA"))62
{63 strA=strA+strB.substring(strB.length()-1, strB.length());64 strB=strB.substring(0, strB.length()-1);65 }66elseif(strType .equals("BC"))67
{68 strC=strC+strB.substring(strB.length()-1, strB.length());69 strB=strB.substring(0, strB.length()-1);70 }71elseif(strType .equals("CA"))72
{73 strA=strA+strC.substring(strC.length()-1, strC.length());74 strC=strC.substring(0, strC.length()-1);75 }76elseif(strType .equals("CB"))77
{78 strB=strB+strC.substring(strC.length()-1, strC.length());79 strC=strC.substring(0, strC.length()-1);80 }81 Add0();8283 }8485/// 86/// 加087/// 88publicvoidAdd0()89
{90for(inti=0; i<_long src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif">
{92if(i==strA.length())93 strA=strA+"0";94if(i==strB.length())95 strB=strB+"0";96if(i==strC.length())97 strC=strC+"0";98 }99 }100101/// 102/// 去0103/// 104publicvoidremove0()105
{106 strA=strA.replace("0","");107 strB=strB.replace("0","");108 strC=strC.replace("0","");109 }110111/// 112/// 初始化字符串113/// 114publicvoidInitStr()115
{116for(inti=_long; i>0; i--)117
{118 strA+=String.valueOf(i);119 strB+="0";120 strC+="0";121 }122 }123124
publicstaticvoidmain(String[] args){125//TODO Auto-generated method stub126//汉诺塔问题分析方法与解答127//问题:将n个盘子从A座移动到C座128//步骤1:将A座上n-1个盘借助C座先移动到B座上129//步骤2:把A座上剩下的一个盘移动到C座上130//步骤3:将n-1个盘从B座借助于A座移动到C座上131//上面第一步与第三步,都是把n-1个盘从一个座移动到另一个座上,采取的办法是一样的,只是座的名字不同而已132//对应关系如下:第一步:one--A two--B three--C;第三步:one--B two--C three--A133134 Hanoi_X8023Z hanoi_x8023z=newHanoi_X8023Z();//实例化数据排序对象135hanoi_x8023z.InitStr();//初始化字符串136String A="A";//第一个座A137String B="B";//第二个座B138String C="C";//第三个座C139intn=5;//盘子个数140hanoi_x8023z.hanoi(n,A,B,C);//调用汉诺塔排序方法141System.out.println();142143 }144}145
结果:
54320
00000
10000
54300
20000
10000
54300
21000
00000
54000
21000
30000
54100
20000
30000
54100
00000
32000
54000
00000
32100
50000
40000
32100
50000
41000
32000
52000
41000
30000
52100
40000
30000
52100
43000
00000
52000
43000
10000
50000
43200
10000
50000
43210
00000
00000
43210
50000
10000
43200
50000
10000
43000
52000
00000
43000
52100
30000
40000
52100
30000
41000
52000
32000
41000
50000
32100
40000
50000
32100
00000
54000
32000
00000
54100
30000
20000
54100
30000
21000
54000
00000
21000
54300
10000
20000
54300
10000
00000
54320
00000
00000
54321
1
importjava.util.*;2
publicclasshanoi{34finalstaticintHANOI_SIZE=5;//汉诺塔规模大小5staticintcount;//盘子搬动次数6staticHashtableabc;//泛型,记录柱子上的盘子状态,如:A-5432178staticvoidhanoi(intn, String x, String y, String z)9
{10if(n==1)11
{12 move(x,1, z);//将编号为1的盘从x移到z13}14else15
{16 hanoi(n-1, x, z, y);//将x上编号为1至n-1的盘移动到y,z作为辅助17move(x, n, z);//将编号为n的圆盘从x移到z18hanoi(n-1, y, x, z);//将y上编号为1至n-1的盘移动到z,x作为辅助19}20 }212223staticvoidmove(String x,intn, String y)24
{25 System.out.println("第"+++count+"次移动,把盘"+n+"从"+x+"-->"+y);26 abc.put(x, abc.get(x)/10);27 abc.put(y, abc.get(y)*10+n);28 System.out.println(Filter(abc.get("A"))+""+Filter(abc.get("B"))+""+Filter(abc.get("C")));29 }303132staticString Filter(inti)33
{34returnhanoi.rightFillMethod(String.valueOf(i),HANOI_SIZE);35 }3637publicstaticString rightFillMethod(String str,intj)//右补038
{39if(jreturnstr;41for(inti=0;i<=j-str.length();i++)42 str+="0";43returnstr;44 }4546
publicstaticvoidmain(String[] args){47//初始化柱子状态,和搬动次数计数48abc=newHashtable();49 abc.put("A",0);50 abc.put("B",0);51 abc.put("C",0);5253 count=0;5455intsize;56for(size=HANOI_SIZE; size>0; size--)57
{58 abc.put("A", abc.get("A")*10+size);59 }60 hanoi(HANOI_SIZE,"A","B","C");61 System.out.println();62 }6364}65
结果:
第1次移动,把盘1从A --> C
54320 0000 1000
第2次移动,把盘2从A --> B
54300 2000 1000
第3次移动,把盘1从C --> B
54300 2100 0000
第4次移动,把盘3从A --> C
5400 2100 3000
第5次移动,把盘1从B --> A
54100 2000 3000
第6次移动,把盘2从B --> C
54100 0000 3200
第7次移动,把盘1从A --> C
5400 0000 32100
第8次移动,把盘4从A --> B
5000 4000 32100
第9次移动,把盘1从C --> B
5000 4100 3200
第10次移动,把盘2从C --> A
5200 4100 3000
第11次移动,把盘1从B --> A
52100 4000 3000
第12次移动,把盘3从C --> B
52100 4300 0000
第13次移动,把盘1从A --> C
5200 4300 1000
第14次移动,把盘2从A --> B
5000 43200 1000
第15次移动,把盘1从C --> B
5000 43210 0000
第16次移动,把盘5从A --> C
0000 43210 5000
第17次移动,把盘1从B --> A
1000 43200 5000
第18次移动,把盘2从B --> C
1000 4300 5200
第19次移动,把盘1从A --> C
0000 4300 52100
第20次移动,把盘3从B --> A
3000 4000 52100
第21次移动,把盘1从C --> B
3000 4100 5200
第22次移动,把盘2从C --> A
3200 4100 5000
第23次移动,把盘1从B --> A
32100 4000 5000
第24次移动,把盘4从B --> C
32100 0000 5400
第25次移动,把盘1从A --> C
3200 0000 54100
第26次移动,把盘2从A --> B
3000 2000 54100
第27次移动,把盘1从C --> B
3000 2100 5400
第28次移动,把盘3从A --> C
0000 2100 54300
第29次移动,把盘1从B --> A
1000 2000 54300
第30次移动,把盘2从B --> C
1000 0000 54320
第31次移动,把盘1从A --> C
0000 0000 543210
文章浏览阅读364次。1.WebMagicWebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。2.在Eclipse中配置WebMagic1.首先需要下载WebMagic的压缩包官网地址为:WebMagic官网最新版本为:WebMagic-0.7.3,找到对应版本,打开下载界面,注意,下载要选择Source code(zip)版本,随便下载到哪里都可以;2.下载好的压缩包需要解压,此时解压到的位置即为后续新建的Eclipse的project位置,比如我的Ecli_使用eclipse搭建webmagic工程
文章浏览阅读1.9k次。mysql数据库是一种开放源代码的关系型数据库管理系统,有很多朋友都在使用。一些在linux系统上安装了mysql数据库的朋友,却不知道该如何对mysql数据库进行配置。那么linux该如何启动mysql服务呢?接下来小编就给大家带来linux启动mysql服务的命令教程。具体步骤如下:1、首先,我们需要修改mysql的配置文件,一般文件存放在/etc下面,文件名为my.cnf。2、对于mysql..._linux中 mysql 启动服务命令
文章浏览阅读537次。详解OJ(Online Judge)中PHP代码的提交方法及要点Introduction of How to submit PHP code to Online Judge SystemsIntroduction of How to commit submission in PHP to Online Judge Systems在目前常用的在线oj中,codeforces、spoj、uva、zoj..._while(fscanf(stdin, "%d %d", $a, $b) == 2)
文章浏览阅读534次。一、设置MyEclipse编码(1)修改工作空间的编码方式:Window-->Preferences-->General-->Workspace-->Text file encoding(2)修改一类文件的编码方式:Window-->Preferences-->General-->content Types-->修改default Encoding(..._java修改快捷缩写内容
文章浏览阅读1.4w次,点赞19次,收藏76次。1.前言市面上关于Android的技术书籍很多,几乎每本书也都会涉及到蓝牙开发,但均是上层应用级别的,而且篇幅也普遍短小。对于手机行业的开发者,要进行蓝牙模块的维护,就必须从Android系统底层,至少框架层开始,了解蓝牙的结构和代码实现原理。这方面的文档、网上的各个论坛的相关资料却少之又少。分析原因,大概因为虽然蓝牙协议是完整的,但是并没有具体的实现。蓝牙芯片公司只负责提供最底层的API_蓝牙原理图详解
文章浏览阅读7.7k次。图/源于网络文/曲尚菇凉1.今天早上出门去逛街,在那家冰雪融城店里等待冰淇淋的时候,听到旁边两个女生在讨论很久之前的一期《奇葩说》。那期节目主持人给的辩论题是“从未在一起和最终没有在一起哪个更遗憾”,旁边其中一个女生说,她记得当时印象最深的是有个女孩子说了这样一句话。她说:“如果我喜欢一个人呢,我就从第一眼到最后一眼,把这个人爱够,把我的感觉用光,我只希望那些年让我成长的人是他,之后的那些年他喝过..._从未在一起更遗憾
文章浏览阅读175次。Spring Cloud Alibaba 介绍Sping体系Spring 以 Bean(对象) 为中心,提供 IOC、AOP 等功能。Spring Boot 以 Application(应用) 为中心,提供自动配置、监控等功能。Spring Cloud 以 Service(服务) 为中心,提供服务的注册与发现、服务的调用与负载均衡等功能。Sping Cloud介绍官方介绍 Tools for building common patterns in distributed systems_sprngcloud alba
文章浏览阅读3.2k次,点赞4次,收藏21次。我这里是根据之前在测试数据类项目过程中的一些总结经验和掉过个坑,记录一下,可以给其他人做个参考,没什么高深的东西,但是如果不注意这些细节点,后期也许会陷入无尽的扯皮当中。1 需求实现的准确度根据产品需求文档描述发现不明确不详细的或者存在歧义的地方一定要确认,例如数据表中的一些字段,与开发和产品确认一遍,如有第三方相关的,要和第三方确认,数据类项目需要的是细心,哪怕数据库中的一个字段如果没有提前对清楚,后期再重新补充,会投入更大的精力。2 数据的合理性根据业务场景/常识推理,提..._基础字段的测试点
文章浏览阅读491次。大家好,我是爱学习的小xiong熊妹。在工作和面试中,很多小伙伴会遇到“对XX行业进行分析”的要求。一听“行业分析”四个字,好多人会觉得特别高大上,不知道该怎么做。今天给大家一个懒人攻略,小伙伴们可以快速上手哦。一、什么是行业?在做数据分析的时候,“行业”两个字,一般指的是:围绕一个商品,从生产到销售相关的全部企业。以化妆品为例,站在消费者角度,就是简简单单的从商店里买了一支唇膏回去。可站在行业角度,从生产到销售,有相当多的企业在参与工作(如下图)在行业中,每个企业常常扮._码工小熊
文章浏览阅读1.6w次,点赞2次,收藏2次。还需要做更多的研究来解决大型语言模型中的偏见、有毒评论和幻觉的风险。我们在数万亿个令牌上训练我们的模型,并表明可以仅使用公开可用的数据集来训练最先进的模型,而无需诉诸专有和不可访问的数据集。在大型语言模型空间中训练像 LLaMA 这样的小型基础模型是可取的,因为它需要更少的计算能力和资源来测试新方法、验证他人的工作和探索新的用例。作为 Meta 对开放科学承诺的一部分,今天我们公开发布 LLaMA(大型语言模型元 AI),这是一种最先进的基础大型语言模型,旨在帮助研究人员推进他们在 AI 子领域的工作。_llma
文章浏览阅读223次,点赞3次,收藏5次。1.背景介绍制造业是国家经济发展的重要引擎,其产能和质量对于国家经济的稳定和发展具有重要意义。随着工业技术的不断发展,制造业的生产方式也不断发生变化。传统的制造业通常依赖于人工操作和手工艺,这种方式的缺点是低效率、低产量和不稳定的质量。随着信息化、智能化和网络化等新技术的出现,制造业开始向智能制造迈出了第一步。智能制造的核心是通过大数据、人工智能、计算机视觉等技术,实现制造过程的智能化、自动化...
文章浏览阅读938次。系列文章目录文章目录系列文章目录 前言 一、ansible是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言菜鸟一只,刚开始使用,仅作以后参考使用。边学习,边记录,介绍一下最基础的使用,可能会有理解不到位的地方,可以共同交流,废话不多说,走起。一、ansible 简介?ansible是自动化运维工具的一种,基于Python开发,可以实现批量系统配置,批量程序部署,批量运行命令,ansible是基于模块工作的,它本身没有批量部署的能力,真正.._pip安装ansible