借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。 输入格式: 输入为一个正整数N,即起始

动态 未结 0 53
小小草
小小草 LV1 2023年9月23日 23:40 发表
```java import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); hanoi(n, 'a', 'b', 'c'); } private static void hanoi(int n, char a, char b, char c) { Stack s1 = new Stack<>(); Stack s2 = new Stack<>(); Stack s3 = new Stack<>(); for (int i = n; i > 0; i--) { s1.push(i); s2.push(a); s3.push(c); } while (!s1.isEmpty()) { int num = s1.pop(); char from = s2.pop(); char to = s3.pop(); if (num == 1) { System.out.println(from + " -> " + to); } else { s1.push(num - 1); s2.push(to); s3.push(from); s1.push(1); s2.push(from); s3.push(to); s1.push(num - 1); s2.push(from); s3.push(to); } } } } ```
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复