当前位置:网站首页>Hanoi Tower problem
Hanoi Tower problem
2022-07-02 22:16:00 【HairLossException】
The origin of the tower of Hanoi problem
It's said that in the ancient temple of India , There is one called the Hanoi Tower (Hanoi) The game of . The game is on a copper device , There are three rods ( Number A、B、C), stay A From the bottom up 、 Place in order from large to small 64 A gold plate . The goal of the game : hold A All the gold plates on the pole are moved to C On the pole , And still keep the original order . Operating rules : Only one plate can be moved at a time , And keep the big plate down all the time during the moving process , Small in , The plate can be placed during the operation A、B、C On any pole .
Thought analysis
If there is only one disc, move the disc directly from the initial column to the target column
The number of discs is 2 Move the small disc to the auxiliary column, and then move the large disc to the target column
If you have any n Disc We can put this n A disc is regarded as 2 A plate —— The bottom plate and all the upper plates
(1) The above n-1 A disk moves to B column ( here A The column is the initial column ,B The column is the target column ,C Columns are auxiliary columns )
(2) Move the lowest disc to the target column ( here A The column is the initial column ,C The column is the target column ,B Columns are auxiliary columns )
(3) Move all disks on the auxiliary column to the target disk ( here B The column is the initial column ,C The column is the target column ,A Columns are auxiliary columns )
public class HanoiTower {
public static void main(String[] args) {
hanoiTower(4,'A','B','C');
}
/** * * @param num Number of discs * @param a Starting column * @param b Auxiliary column * @param c Target column */
public static void hanoiTower(int num,char a,char b,char c){
/* If there is only one disc, the disc can be directly removed from a The column moves to c column */
if (num == 1){
System.out.println(" The first 1 A disk from " + a + "->" + c);
}else{
/* The number of discs is greater than 1*/
/* First move all the disks above to from A Move to B column C Columns as auxiliary columns */
hanoiTower(num-1,a,c,b);
/* Move the bottom disk to C column */
System.out.println(" The first "+num+" A disk from " + a + "->" + c);
/* hold B The disc on the column moves to C column A Columns are auxiliary columns */
hanoiTower(num-1,b,a,c);
}
}
}
Running results
The first 1 A disk from A->B
The first 2 A disk from A->C
The first 1 A disk from B->C
The first 3 A disk from A->B
The first 1 A disk from C->A
The first 2 A disk from C->B
The first 1 A disk from A->B
The first 4 A disk from A->C
The first 1 A disk from B->C
The first 2 A disk from B->A
The first 1 A disk from C->A
The first 3 A disk from B->C
The first 1 A disk from A->B
The first 2 A disk from A->C
The first 1 A disk from B->C
Process finished with exit code 0
边栏推荐
- From "bronze" to "King", there are three secrets of enterprise digitalization
- D4:非成对图像去雾,基于密度与深度分解的自增强方法(CVPR 2022)
- [Yu Yue education] reference materials of analog electronic technology of Nanjing Institute of information technology
- D4: unpaired image defogging, self enhancement method based on density and depth decomposition (CVPR 2022)
- Tencent three sides: in the process of writing files, the process crashes, and will the file data be lost?
- 技术人创业:失败不是成功,但反思是
- Daily book -- analyze the pain points of software automation from simple to deep
- Ransack combined condition search implementation
- Web side defense Guide
- Unity3d learning notes 4 - create mesh advanced interface
猜你喜欢
随机推荐
记录一下微信、QQ、微博分享web网页功能
PIP version update timeout - download using domestic image
[shutter] shutter layout component (fractionallysizedbox component | stack layout component | positioned component)
Image segmentation using pixellib
攻防世界pwn题:Recho
《Just because》阅读感受
The neo4j skill tree was officially released to help you easily master the neo4j map database
Pyqt picture decodes and encodes and loads pictures
What is it that makes you tremble? Those without fans can learn
情感计算与理解研究发展概述
MySQL learning record (3)
Ransack组合条件搜索实现
Etcd raft protocol
MySQL learning record (7)
20220702-程序员如何构建知识体系?
Servicemesh mainly solves three pain points
The difference between include < > and include ""
Try to get property'num for PHP database data reading_ rows' of non-object?
Find objects you can't see! Nankai & Wuhan University & eth proposed sinet for camouflage target detection, and the code has been open source
sql service 截取字符串