예제 #1
0
        /*TODO: Implementar métodos*/
        public void mover_disco(Pila a, Pila b)
        {
            if(b.isEmpty(){
                b[0]=a[a.getSize()-1];
                a.pop();
            }

            else if(a[a.getSize()-1].getValor() < b[b.getSize()-1].getValor(){
                b[b.getSize()-1]=a[a.getSize()-1];
                a.pop();
            }

            else{
                return 0;
            }
        }
예제 #2
0
        public int iterativo(Pila ini, Pila fin, Pila aux)
        {
            int numMov = 0;

            if(ini.getSize()%2 == 0){
                for(int i=0; i=(2^ini.getSize())-1; i++){
                    Hanoi.mover_disco(ini,aux);
                    Hanoi.mover_disco(ini,fin);
                    Hanoi.mover_disco(aux,fin);
                    numMov += 3;
                }

            }
            else{
                for(int i=0; i=(2^ini.getSize())-1; i++){
                    Hanoi.mover_disco(ini,fin);
                    Hanoi.mover_disco(ini,aux);
                    Hanoi.mover_disco(aux,fin);
                    numMov += 3;
                }
            }

            return numMov;
        }