Hanojské veže
Created: 2008-06-19 - 17:03
Hanojske veze
Kedze sa mi totalne, ale totalne nechcelo riesit tento problem, tak som si pomohol uzasnou wikipediou, ktora obsahuje pre tento problem zdrojove kody vo vsetkych najznamejsich programovacich jazykoch. Kedze ten povodny co tam bol, bol dost chaby na pochopenie, tak som tam pridal simulaciu, ktora ukazuje ako sa presuvaju jednotlive disky z tyci.
Hanojske veze na wikipedii
import java.util.Stack; public class HanojskeVeze { public static Stack ta = new Stack (); public static Stack tb = new Stack (); public static Stack tc = new Stack (); public static void main(String args[]) { int n = 10; for (int i = n; i > 0; i--) { ta.push(String.valueOf(i)); } System.out.println("A:" + ta); System.out.println("B:" + tb); System.out.println("C:" + tc); System.out.println("-----"); hanoi(n, 'A', 'B', 'C'); } // n je pocet diskov, a,b,c reprezentuju tri tyce public static void hanoi(int n, char a, char b, char c) { if (n == 1) { String pom = "e"; switch (a) { case 'A': pom = ta.pop(); break; case 'B': pom = tb.pop(); break; case 'C': pom = tc.pop(); break; default: break; } switch (c) { case 'A': ta.push(pom); break; case 'B': tb.push(pom); break; case 'C': tc.push(pom); break; } System.out.println("A:" + ta); System.out.println("B:" + tb); System.out.println("C:" + tc); System.out.println("Presunute z " + a + " na " + c); System.out.println("-----"); } else { hanoi(n - 1, a, c, b); hanoi(1, a, b, c); hanoi(n - 1, b, a, c); } } }