主题:Moz 的排列组合
----------------------------------------------------------------------
取消停止位置
改为无穷下一[size=4]排列[/size]:
顺序:从小到大循环
function nextpl$(a$)
l=len(a$)
for e=(l-1) to 1 step -1
if mid$(a$,e,1)<mid$(a$,e+1,1) then exit for
next
if e>0 then
FOR i = l TO (e + 1) STEP -1
IF MID$(a$, i, 1) > MID$(a$, e, 1) THEN EXIT FOR
NEXT
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, e, 1)
MID$(a$, e, 1) = b$
end if
FOR i = (e + 1) TO (l + e + 1) \ 2
j = l + e + 1 - i
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, j, 1)
MID$(a$, j, 1) = b$
NEXT
nextpl$=a$
end function
-----------------------------------------------------------
[size=4]组合[/size]函数
顺序:由后至前循环。
可以很方便的和之前做的排列函数结合使用
只是存在一个缺点,就是不能有相同重复的字符
利用的字符串,当然,只要你有需要,
你可以很方便的延伸出去的。
function nextzh$(a$,b$)
for i=1 to len(b$)
if instr(1,a$,mid$(b$,i,1))>i then
mid$(b$,1,i)=mid$(a$,instr(1,a$,mid$(b$,i,1))-i,i)
exit for
endif
next
if i>len(b$) then b$=right$(a$,len(b$))
nextzh$=b$
end function
-----------------------------------------------------------------------------
[size=4]排列组合的联用[/size]
.......未完待续......
取消停止位置
改为无穷下一[size=4]排列[/size]:
顺序:从小到大循环
function nextpl$(a$)
l=len(a$)
for e=(l-1) to 1 step -1
if mid$(a$,e,1)<mid$(a$,e+1,1) then exit for
next
if e>0 then
FOR i = l TO (e + 1) STEP -1
IF MID$(a$, i, 1) > MID$(a$, e, 1) THEN EXIT FOR
NEXT
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, e, 1)
MID$(a$, e, 1) = b$
end if
FOR i = (e + 1) TO (l + e + 1) \ 2
j = l + e + 1 - i
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, j, 1)
MID$(a$, j, 1) = b$
NEXT
nextpl$=a$
end function
-----------------------------------------------------------
[size=4]组合[/size]函数
顺序:由后至前循环。
可以很方便的和之前做的排列函数结合使用
只是存在一个缺点,就是不能有相同重复的字符
利用的字符串,当然,只要你有需要,
你可以很方便的延伸出去的。
function nextzh$(a$,b$)
for i=1 to len(b$)
if instr(1,a$,mid$(b$,i,1))>i then
mid$(b$,1,i)=mid$(a$,instr(1,a$,mid$(b$,i,1))-i,i)
exit for
endif
next
if i>len(b$) then b$=right$(a$,len(b$))
nextzh$=b$
end function
-----------------------------------------------------------------------------
[size=4]排列组合的联用[/size]
.......未完待续......