Java 简单的河内塔代码,如何将时间限制从5秒减少到3秒
在这里,我得到了5秒的运行时间,我应该怎么做,把它减少到3秒。帮我一下 导入java.util.*Java 简单的河内塔代码,如何将时间限制从5秒减少到3秒,java,Java,在这里,我得到了5秒的运行时间,我应该怎么做,把它减少到3秒。帮我一下 导入java.util.* class GFG { public void solution(int n,int s,int a,int e){ if(n==1){ System.out.println(s+ " " +e); } else{ solution(n-1,s,e,a); System
class GFG {
public void solution(int n,int s,int a,int e){
if(n==1){
System.out.println(s+ " " +e);
}
else{
solution(n-1,s,e,a);
System.out.println(s+ "->" +e);
solution(n-1,a,s,e);
}
}
public static void main (String[] args) {
//code
GFG hom=new GFG();
System.out.println("engter number of disks:");
Scanner sc=new Scanner(System.in);
int dish=sc.nextInt();
hom.solution(dish,1,2,3);
}
}
我还没有检查逻辑,但在像GFG这样的网站上,ur输出应该打印得很快,所以我使用了StringBuilder 检查这是否有效
public class GFG {
static StringBuilder sb;
public void solution(int n,int s,int a,int e){
if(n==1){
sb.append(s+ " " +e+"\n");
}
else{
solution(n-1,s,e,a);
sb.append(s+ "->" +e+"\n");
solution(n-1,a,s,e);
}
}
public static void main (String[] args) {
//code
sb=new StringBuilder();
GFG hom=new GFG();
System.out.println("enter number of disks:");
Scanner sc=new Scanner(System.in);
int dish=sc.nextInt();
hom.solution(dish,1,2,3);
System.out.println(sb);
}
}
考虑使用自己的数据结构来保存堆栈,而不是使用递归。(事实上,我不知道这会有多大帮助。但在我熟悉的情况下,通话的开销可能会很大。)