技术标签: 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
文章浏览阅读96次。https://www.fgba.net/sitemap.xml_doxygen后显示无法被文档化
文章浏览阅读763次,点赞8次,收藏17次。很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家我的【Github】会分享一些关于Android进阶方面的知识,也会分享一下最新的面试题~如果你熟练掌握GitHub中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
文章浏览阅读256次,点赞5次,收藏10次。由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,
文章浏览阅读579次,点赞29次,收藏11次。针对apk,加固是多维度的安全防护方案,包括反破解、反逆向、防篡改等,可以防止应用被各类常见破解工具逆向,安全性要远大于单纯的代码混淆。操作的对象是项目打包成的apk文件。为什么我们需要混淆?因为java字节码特性很容易反编译。对于加固,上架应用市场一般提供相关文档指导我们进行apk的渠道打包发布,这里不做展开我们先大概知道加固的一些原理。修改gradlerelease {参考需要保留的类及方法,确定项目中哪些不能混淆的类参考混淆模板,编写我们的混淆文件。
文章浏览阅读4.7k次。RAS Socket 拨号网络_mfc ras拨号不用指定域名吗
文章浏览阅读4.9k次。unity编辑器 连接 安卓设备 进行 adb真机调试的时候,unity需要设置 分析模式,才能 显示 安卓 的Debug.log信息当Unity使用ADB服务对安卓构建apk进行build的时候,不要一开始 使得Unity分析窗口进入分析模式,而是 当 安卓设备 进入到自己 想要调试的 位置,再开启分析模式显示 代码中的Debug.log信息。在Unity编辑器 使用ADB服务对安卓 进行 分析的 时候,只要开启 分析模式 就会 很卡。..._unity android 真机性能显示
文章浏览阅读5k次。PostgreSQL的存储过程及基本使用 一、存储过程的结构二、变量使用1.变量类型2.record变量3.赋值 三、基本流程语句1.分支选择2.循环 四、查询并返回多条记录五、其它 一、存储过程的结构 一个求长方形面积的存储过程。(当然,这个存储过程在数据库中并没有什么实用意义,这..._postgre 调用存储过程
文章浏览阅读634次。参考mooc魏英《C++程序设计》文字是魏老师的讲解,纯手打,ppt上没有。为什么会用到静态成员:现在大型应用程序都是由多个程序员所开发的,那么多个程序员就需要使用一个共同都能使用的数据来解决一些问题,采用静态数据成员解决这一问题。思考一下现在我们需要统计员工的总人数,能不能在这个员工类中增加一个成员专门用来存放总人数呢?这样做是不好的:1.每个对象都要增加一个这样的成员,对存储空间是一种浪费。对于公司来说,总人数只有一个值,那么每个对象都要增加一个这样的成员,浪费存储空间。2.使用不方便,当总人数_static cpp 成员函数
文章浏览阅读3.8k次,点赞2次,收藏6次。关于openssl版本不兼容问题产生原因解决办法原本pro配置文件:/*无效的配置*/#增加程序库文件路径LIBS += \ -lcurl -lcrypto -ljsoncpp直接上错误代码:/usr/lib/x86_64-linux-gnu/libcurl.so:对‘PKCS12_PBE_add@OPENSSL_1.0.0’未定义的引用/usr/lib/x86_64-linux-gnu/libcurl.so:对‘OCSP_basic_verify@OPENSSL__undefined reference to symbol 'x509_get_subject_name@@openssl_1_1_0
文章浏览阅读2.7k次。N叉树N 叉树的定义N 叉树的遍历N 叉树的经典递归解法"自顶向下"的解决方案"自底向上"的解决方案N 叉树的定义二叉树是一棵以根节点开始,每个节点含有不超过 2 个子节点的树。将这个定义扩展到 N 叉树 。 一棵以根节点开始,每个节点不超过 N 个子节点的树,称为 N叉树阅读参考:https://leetcode-cn.com/leetbook/read/n-ary-tree/x0wi57/N 叉树的遍历一棵二叉树可以按照前序、中序、后序或者层序来进行遍历。在这些遍历方法中,前序遍历、后序遍历和_n叉树
文章浏览阅读6.1k次。shell编程常见系统变量命令功能$0当前脚本名称$?命令或程序执行完后的状态,返回0则表示执行成功$n当前脚本的第n个参数,n=1,2,…9$#当前脚本的参数个数(不包括程序本身)$*当前脚本的所有参数(不包括程序本身)$$程序本身的PID号shell编程常见环境变量命令功能PATH命令所示路径,以冒号为分割PWD显示当前所在路径USER打印当前用户名ID打印当前用户id信息TERM_熟悉shell常用的系统变量和环境变量,练习语句
文章浏览阅读1.4k次。CREATE OR REPLACE FUNCTION "gis"."get_hzpycap"("v_str" varchar, "needhz" int4=0) RETURNS "pg_catalog"."varchar" AS $BODY$DECLARE pos INT4; hzlen INT4; hz ..._pg 中文简拼函数