2016-07-27 4 views
-3

hier reduzieren, ich bekomme Laufzeit von 5 Sekunden, was soll ich tun, um es auf 3 sec.help mich hier zu reduzieren.einfacher Turm von Hanoi-Code, wie Zeit auf 3 Sekunden statt 5 Sekunden

importieren 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.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); 
    } 
} 
+0

arbeitet Betrachten Sie Ihre eigene Datenstruktur mit einem Stapel zu halten, statt Rekursion zu verwenden. (Eigentlich weiß ich nicht, wie viel das helfen würde. Aber in den Situationen, die ich kenne, kann der Overhead eines Anrufs erheblich sein.) – ajb

Antwort

0

Ich habe die Logik nicht überprüft, aber auf Seiten wie GFG ur Ausgabe sollte schnell drucken, so habe ich StringBuilder verwendet.

Überprüfen Sie, ob diese

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); 
} 
} 
Verwandte Themen