Artículo en inglés en el Blog de Calvin Hsia.
-- Permutations --
http://blogs.msdn.com/calvin_hsia/archive/2005/01/18/355405.aspx
Ejemplo:
nn=0
permute("abcd",0)
PROCEDURE permute(cstr,nLev)
LOCAL nTrylen,i
nTrylen= LEN(cstr)-nLev
IF nTryLen = 0
nn=nn+1
?nn,cstr
ELSE
FOR i = 1 to nTrylen
IF i>1 && swap nlev+1 and nlev+i chars
cstr= LEFT(cstr,nlev) + SUBSTR(cstr,nLev+i,1) +;
SUBSTR(cstr,nLev+2, i-2)+SUBSTR(cstr,nlev+1,1)+SUBSTR(cstr,nLev+i+1)
ENDIF
permute(cstr,nlev+1)
ENDFOR
ENDIF
RETURN
No hay comentarios.:
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.