当前位置:网站首页>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
边栏推荐
- Destroy in beforedestroy invalid value in localstorage
- SQL必需掌握的100个重要知识点:管理事务处理
- Try to get property'num for PHP database data reading_ rows' of non-object?
- "New programmer 003" was officially launched, and the cloud native and digital practical experience of 30+ companies such as Huawei and Alibaba
- [shutter] shutter layout component (physicalmodel component)
- Image segmentation using pixellib
- MySQL installation failed -gpg verification failed
- #include<>和#include“”的区别
- pyqt圖片解碼 編碼後加載圖片
- Interpretation of CVPR paper | generation of high fidelity fashion models with weak supervision
猜你喜欢
Reading experience of just because
The book "new programmer 002" is officially on the market! From "new database era" to "software defined car"
Kubernetes resource object introduction and common commands (4)
【零基础一】Navicat下载链接
MySQL learning record (8)
Tencent three sides: in the process of writing files, the process crashes, and will the file data be lost?
Scrcpy this software solves the problem of sharing mobile screen with colleagues | community essay solicitation
The difference between include < > and include ""
C language, to achieve three chess games
pip安裝whl文件報錯:ERROR: ... is not a supported wheel on this platform
随机推荐
Detailed explanation of OSI seven layer model
Unity3D学习笔记4——创建Mesh高级接口
pyqt圖片解碼 編碼後加載圖片
【零基础一】Navicat下载链接
SQL必需掌握的100个重要知识点:使用游标
System (hierarchical) clustering method and SPSS implementation
MySQL learning record (4)
App page sharing password rails implementation
Error in PIP installation WHL file: error: is not a supported wheel on this platform
[shutter] shutter layout component (fractionallysizedbox component | stack layout component | positioned component)
【leetcode】1380. Lucky number in matrix
如何访问kubernetes API?
Chargement de l'image pyqt après décodage et codage de l'image
MySQL learning record (5)
Blue Bridge Cup Eliminate last one (bit operation, code completion)
使用 EMQX Cloud 实现物联网设备一机一密验证
Centos7 installation and configuration of redis database
Physical layer cables and equipment
APP页面分享口令Rails实现
TinyMCE visual editor adds Baidu map plug-in