search
HomeComputer TutorialsComputer KnowledgeHow to write a C language program to solve the Tower of Hanoi problem
How to write a C language program to solve the Tower of Hanoi problemJan 05, 2024 pm 08:18 PM
Tower of Hanoi programming c languageWhat should be the C language program for the Tower of Hanoi problem?Compile a Tower of Hanoi game in C language

How to write a C language program for the Tower of Hanoi problem

In fact, there are three main steps:

First, move the n-1 disks on a to b through c.

Second, move the bottom disk on a to c.

Third, since the first n-1 plates are all on pillar b, we only need to treat pillar b as pillar a and repeat the above steps.

#include

Let's learn how to solve the puzzle. During the puzzle we can use a function to move the plate. The prototype of the function is "void move(int n, char a, char b, char c)". Inside the function, we can use recursion to move the plate. By specifying the number of plates n and the identifiers of the three pillars a, b, c, we can move the plates from pillar a to pillar c in sequence. Thoughts on recursion

{

if(n==1)

printf("\t%c->%c\n", a, c); // When there is only one plate, move the plate directly from a to c

else

{

In order to help players who have not passed the level yet, let us learn about the specific puzzle solving methods. In the process of solving puzzles, we can use recursive methods. The specific operations are as follows: 1. Move the n-1th plate from pillar a to pillar c: move(n-1, a, c, b); 2. Move the nth plate from pillar a to pillar b; 3. Add the n

In order to help players who have not solved the puzzle yet, we can use the following code to solve the problem: printf("\t%c->%c\n",a,c);

In order to help players who have not passed this level yet, let’s take a look at the specific steps to solve the puzzle. First, we can move the first n-1 plates from column B to column A, so that column B becomes the starting column, and then move the plates on column B to column C through column A.

}

}

int main()

{

int n;

printf ("Please enter the number of blocks to be moved:");

scanf("%d",&n);

move(n,'a','b','c');

return 0;

}

Compile a Tower of Hanoi game using C language

I just made it yesterday.

#include void hanoi(int n,char one,char two,char three);

void main() { int m; printf("Please enter the number of floors of the tower:"); scanf("%d",&m); printf("Please follow the steps below:\n"); hanoi(m,'1','2','3'); }

void hanoi(int n,char one,char two,char three) { void move(char x,char y); if(n==1) move(one,three); else { hanoi(n-1 ,one,three,two); move(one,three); hanoi(n-1,two,one,three); } }

I will share with you a simple movement function that can help you perform movement operations in the game. The function is as follows: void move(char x, char y) { printf("%c--->%c\n", x, y); } This function accepts two parameters, representing the current position and the target position. It will print out the moving process so you can track the moving path. You can call this function to perform movement operations as needed. I hope this function can help you pass the level!

How to program Luohan Tower in C language

You can read the comments here:

My program is below:

Below is a function to help you solve the puzzle, it can be used to move the top sub-block from one tower to another. ```C void NuoYiWei(int FromTa, int ToTa) { //Write your code here to move the top sub-block from FromTa to ToTa. } ``` You can operate on the basis of this function and write your puzzle-solving method according to specific game rules and puzzle requirements. Remember to follow the actual

{

TopPoint[FromTa] is an array recording the height of each tower level. When an element is removed from a tower, the tower's height is reduced by one unit. The purpose of this array is to help us keep track of the current height of each tower.

To solve this problem, we can use the following code to record the data of three towers and move the data from one tower to another: ```python DuiZhan[ToTa][TopPoint[ToTa]] = DuiZhan[FromTa][TopPoint[FromTa]] ``` This line of code will take the data from the top of the moved tower (FromTa) and transfer it to the top of the moved tower (ToTa). This way we can record and move data on the tower.

DuiZhan[FromTa][TopPoint[FromTa]] = 0; //Restore the top level of the originally moved tower to the null value. Now let us take a look at the specific puzzle solving methods to help those players who have not yet passed the level.

In order to help those players who have not passed the level yet, let us learn about the specific puzzle solving methods. One of the key steps is to move the tower to the target location. The specific operation is to increase the number of floors of the target tower by 1 through the code "TopPoint[ToTa];". This step is an important part of the puzzle-solving process, and I hope it will help everyone pass the level smoothly.

}

void Nuo(int FromTa, int MidTa, int ToTa, int NeedMove) function is the main solution to the Tower of Hanoi problem. We can use this function to solve the Tower of Hanoi problem given the initial conditions and the height of the tower.

{

Let's take a look at the specific puzzle solving methods. When the height of the tower that needs to be moved is greater than or equal to 2 floors, we can take the following operations:

{

Nuo(FromTa, ToTa, MidTa, (NeedMove-1)); //First move all the top N-1 except the bottom one to the middle tower. This step is achieved by recursively calling the function. During the puzzle, we need to use three towers (FromTa, ToTa and MidTa) to move the plates. First, we move the top N-1 plates from FromTa to MidTa (implemented by calling the function recursively). Then, move the bottom plate from FromTa to ToTa. Finally, move the N-1 plates on MidTa to ToTa (also through recursive transfer

NuoYiWei(FromTa,ToTa); //Move the bottom plate from the starting tower to the target tower.

Nuo(MidTa,FromTa,ToTa,(NeedMove-1)); //Finally, move all the N-1 items moved to the middle tower to the target tower (assuming this function can achieve this function)

}

else

{

In order to help players who have not passed the level yet, let us learn about the specific puzzle solving methods. If there's only one block left that needs to be moved, just move it.

}

}

This function is written in C. Please note that if you use C language, you need to pay attention to some details.

I have a Tower of Hanoi program written in C language. If you need it, you can send me an email to sxt9840210@163.com and explain clearly what kind of program you need.

How to write a C language program to solve the Tower of Hanoi problem

Tower of Hanoi c language algorithm

I previously collected someone else’s answer, please take a look:

The core idea of ​​the recursive algorithm is to use the solution goal as the starting point and gradually call its own solution process to solve the unknown items until the boundary of the recursion is reached, which is the initial condition. This method is different from the traditional starting from initial conditions, but it is one of the effective ways to solve the problem. Through recursive algorithms, we can gradually decompose complex problems into simple sub-problems and finally obtain the global answer. The key to recursion is to clarify the recursion boundary and ensure that the recursive process can be done correctly

The key to solving the Tower of Hanoi problem lies in analyzing movement rules, finding patterns and determining boundary conditions.

If you want to move n plates from A to C, you can follow the following steps: (1) Move n-1 plates from A to B; (2) Move the nth plate from A to C; (3) Move n-1 plates from B to C. By calling the function recursively, other plates on A can continue to move according to the above three steps until the boundary condition n=1 is reached. In this way, the task can be successfully completed! I hope this puzzle method can be helpful to players who have not passed the level yet.

When your thinking is clear, the program becomes easier to understand. In the program, the key is to analyze the parameters each time the movement function is called and the relationship between towers A, B, and C. Let's illustrate with a practical example below.

In order to help players who have not solved the puzzle yet, let’s take a closer look at how to solve the puzzle. First, we can use the "move(int n, int x, int y, int z)" function to perform moving operations.

②{

③ if (n==1)

In order to help players who have not passed the level yet, let us learn about the specific puzzle solving methods. I have prepared the following steps for you: 1. First, find a function named printf. 2. Then, enter "%c-->%c\n" within the brackets of the printf function, which will print two characters and wrap the line. 3. Inside the brackets, pass x and z as arguments to the printf function.

⑤ else

⑥ {

⑦ move(n-1,x,z,y);

In order to help players pass the level, let’s take a look at the specific puzzle-solving methods. In the code, there is a line of code that is "printf("%c-->%c\n",x,z);". The function of this line of code is to print out the relationship between character x and character z. By observing the printed results, we can get some clues to help us solve the puzzle.

⑨ {getchar();}//Is this sentence necessary? I feel like it can be removed

⑩ move(n-1,y,x,z);

}

}

For example, there are 4 plates, and now they are all placed on tower A. The radius of the plates is larger according to the numbers 1, 2, 3, and 4. Now move the 4 plates to C and arrange them in the original order. First, we consider how to move No. 4 to C? We need to use B as the intermediary, and first move the above three to B. The operation of this step is that ① in the program begins to call the move function (the first call is recorded as one). Of course, n=4 now, and then it is judged that ③n!=1, so ④ is not executed but ⑤ is called again ( Marked as two) Consider how to move 3 disks to B. This is a recursive call, so we go back to ① again and start calling the move function, but the corresponding parameters have changed, because this time we need to consider not moving 4 disks from A to C, but how to move from A. Move 3 disks to B. Because n=3, it cannot be moved directly and requires the help of C as an intermediary. First consider the method of moving two to C, so go to ⑤ and call the move function recursively (marked as three) again. In the same way, two disks still cannot be moved directly from A to C, so the process of moving 1 to B must be considered using B as an intermediary. This time it uses B as the intermediary and moves to C as the purpose. Next, call the move function recursively (marked as four) again, which means moving to B, which can be done directly. The program executes sentences ③ and ④. The program jumps out of the innermost call (that is, jumps out of the fourth call) and returns to the previous one (the third time), and continues downward from the third call to the move function, that is, ⑧, that is, 2 Moved to C, then continued down to

⑩, and then move the one that has been moved to B back to C, thus returning to the second recursion (the time when 3 disks were moved to B using C as an intermediary). Execute ⑧, move the third disk from A to B, and then enter ⑩. In this call, because the two disks on C are moved to B with A as the intermediary, another recursive call is required, corresponding to The parameter transfer must be analyzed clearly, who is the original tower, who is the target tower, and who is the intermediary tower. The process is similar to the above analysis and will not be repeated here.

The above is the detailed content of How to write a C language program to solve the Tower of Hanoi problem. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:Excel办公网. If there is any infringement, please contact admin@php.cn delete
How to Solve Windows Error Code "INVALID_DATA_ACCESS_TRAP" (0x00000004)How to Solve Windows Error Code "INVALID_DATA_ACCESS_TRAP" (0x00000004)Mar 11, 2025 am 11:26 AM

This article addresses the Windows "INVALID_DATA_ACCESS_TRAP" (0x00000004) error, a critical BSOD. It explores common causes like faulty drivers, hardware malfunctions (RAM, hard drive), software conflicts, overclocking, and malware. Trou

ENE SYS Maintenance: Tips and Tricks to Keep Your System Running SmoothlyENE SYS Maintenance: Tips and Tricks to Keep Your System Running SmoothlyMar 07, 2025 pm 03:09 PM

This article provides practical tips for maintaining ENE SYS systems. It addresses common issues like overheating and data corruption, offering preventative measures such as regular cleaning, backups, and software updates. A tailored maintenance s

How do I edit the Registry? (Warning: Use with caution!)How do I edit the Registry? (Warning: Use with caution!)Mar 21, 2025 pm 07:46 PM

Article discusses editing Windows Registry, precautions, backup methods, and potential issues from incorrect edits. Main issue: risks of system instability and data loss from improper changes.

5 Common Mistakes to Avoid During ENE SYS Implementation5 Common Mistakes to Avoid During ENE SYS ImplementationMar 07, 2025 pm 03:11 PM

This article identifies five common pitfalls in ENE SYS implementation: insufficient planning, inadequate user training, improper data migration, neglecting security, and insufficient testing. These errors can lead to project delays, system failures

Discover How to Fix Drive Health Warning in Windows SettingsDiscover How to Fix Drive Health Warning in Windows SettingsMar 19, 2025 am 11:10 AM

What does the drive health warning in Windows Settings mean and what should you do when you receive the disk warning? Read this php.cn tutorial to get step-by-step instructions to cope with this situation.

How do I manage services in Windows?How do I manage services in Windows?Mar 21, 2025 pm 07:52 PM

Article discusses managing Windows services for system health, including starting, stopping, restarting services, and best practices for stability.

why won't driver asio.sys loadwhy won't driver asio.sys loadMar 10, 2025 pm 07:58 PM

This article addresses the failure of the Windows asio.sys audio driver. Common causes include corrupted system files, hardware/driver incompatibility, software conflicts, registry issues, and malware. Troubleshooting involves SFC scans, driver upda

which application uses ene.syswhich application uses ene.sysMar 12, 2025 pm 01:25 PM

This article identifies ene.sys as a Realtek High Definition Audio driver component. It details its function in managing audio hardware, emphasizing its crucial role in audio functionality. The article also guides users on verifying its legitimacy

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.