C语言用迭代写河内塔问题
时间: 2023-06-03 17:02:39 浏览: 51
好的,我可以回答这个问题。以下是用迭代方式写河内塔问题的C语言代码:
```
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
int i;
char s[100];
for (i = 0; i < (1 << n); i++) {
if (i % 2 == 0) {
if ((i | (i - 1)) + 1 & i) {
sprintf(s, "Move disk %d from %c to %c", 1, A, C);
printf("%s\n", s);
} else {
sprintf(s, "Move disk %d from %c to %c", 1, A, B);
printf("%s\n", s);
}
} else {
if ((i | (i - 1)) + 1 & i) {
sprintf(s, "Move disk %d from %c to %c", 2, B, A);
printf("%s\n", s);
} else {
sprintf(s, "Move disk %d from %c to %c", 3, C, A);
printf("%s\n", s);
}
}
}
}
int main() {
int n = 3; // 求解三层河内塔问题
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
以上代码使用迭代方式求解河内塔问题,能够输出每一步移动的具体操作。具体实现可以参考代码注释。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)