所以我正在为我的Algorithms课程编写一个基本的河内Tower程序,我只是重读说明书,它希望我在每一步(Ex.A = 4,3,2,1)后显示每个Towers的内容4是塔A的底部圆盘,1是最顶部的圆盘。我已经为该程序编写了以下代码:
import java.util.Scanner;
public class Driver {
public static void main(String[]args) {
Scanner keyboard = new Scanner (System.in);
int discs;
System.out.println("How many discs are in the starting tower? ");
discs = keyboard.nextInt();
keyboard.close();
Hanoi(discs, 'A', 'B', 'C');
}
public static void Hanoi(int n, char Tower1, char Tower2, char Tower3){
if (n>0) {
Hanoi(n-1, Tower1, Tower2, Tower3);
if(n%2 == 0){
System.out.println("Move disc from " + Tower1 + " to " + Tower2);
System.out.println("Move disc from " + Tower1 + " to " + Tower3);
System.out.println("Move disc from " + Tower2 + " to " + Tower3);
}
else{
System.out.println("Move disc from " + Tower1 + " to " + Tower3);
System.out.println("Move disc from " + Tower1 + " to " + Tower2);
System.out.println("Move disc from " + Tower3 + " to " + Tower2);
}
}
}
由于其他代码与此无关,可能会丢失一些括号。
我的问题是我是否可以获取n / disc的值(来自代码)并将其转换为单个数字以为输出填充多个数组,如下所示:
示例:n = 4 数组[4,3,2,1](Tower1)
并且能够像塔式游戏那样移动这些值
我喜欢我的代码,作为较低级别的程序员不想删除它,但我愿意倾听任何可以帮助我的人。
答案 0 :(得分:0)
不确定要问的是什么,但将字符转换为整数很简单。您可以使用switch语句或向字符的int值添加数字。您可能希望对实际的Hanoi算法进行一些调整,通常使用两个递归调用来完成。 (见Hanoi tutorial)。