Advertisement
nRikee

Carrera de baja la escalera

Dec 9th, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.00 KB | None | 0 0
  1. function min ( a, b )
  2.     if a < b then return a else return b end
  3. end
  4.  
  5.  
  6. function solve ( iniN, iniM )
  7.     A   = { peso = 0, n = iniN, m = iniM, path = { t [ iniN ][ iniM ] } }   -- Contiene el último camino recorrido y su peso
  8.     B   = { peso = 0, n = iniN, m = iniM, path = { t [ iniN ][ iniM ] } }   -- Contiene e camino actual y su peso
  9.    
  10.     repeat
  11.         -- Calcula
  12.         izq = t[B.n+1][B.m]     -- Calcula el hijo izquierdo
  13.         der = t[B.n+1][B.m+1]   -- Calcula el hijo derecho
  14.         men = min ( izq, der )  -- Calcula el mínimo de los dos
  15.         -- Asigna
  16.         B.peso                  = B.peso + men  -- Asigna el nuevo peso
  17.         B.path [ #B.path+1 ]    = men           -- Guarda el nodo elegido
  18.         B.n                     = B.n + 1       -- Avanza
  19.         if izq > der then B.m = B.m + 1 end     -- Actualiza el valor m
  20.         -- Comprueba
  21.         if B.peso > A.peso then -- Si B > A, cambia sus valores
  22.             B   = A
  23.             A   = A
  24.         end
  25.     until B.n >= #t
  26.    
  27.     print ( "el peso es " ..  B.peso )
  28.     for i = 1, #B.path do
  29.         io.write ( B.path [i] .. " " )
  30.     end
  31.    
  32. end
  33.  
  34. solve ( 1, 1 )
  35. print ""
  36. solve ( 1, 2 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement