老刘 发表于 2019-4-22 18:17

[汇编][算法实战005]字符串全排列递归版

本帖最后由 老刘 于 2019-4-22 18:49 编辑

例(52pj的全排列):52pj52jp5p2j5pj25jp25j2p25pj25jp2p5j2pj52jp52j5pp25jp2j5p52jp5j2pj52pj25j2p5j25pjp25jp52j5p2j52p。
以下代码是用递归求解的,分析文章网上一大堆,就不赘述了。
;Code BY 老刘

Include masm32rt.inc
.const
      CrLf db 0DH,0AH,0
.data?
      Input db 20 dup (?)
.code
      recursion Proc Uses Ebx Eax Ecx lpStr:dword
                Mov Ebx,lpStr
                .If Byte Ptr != NULL
                        Mov Al,Byte Ptr
                        Xor Ecx,Ecx
                        .Repeat
                              XChg Al,
                              Mov Byte Ptr ,Al
                              Inc Ebx
                              Invoke recursion,Ebx
                              Dec Ebx
                              XChg Al,
                              Mov Byte Ptr ,Al
                              Inc Ecx
                        .Until Byte Ptr == NULL
                .Else
                        Invoke StdOut,Offset Input
                        Invoke StdOut,Offset CrLf
                .EndIf
                Ret
      recursion Endp

      Start:
                Invoke ArgClC,1,Offset Input
                Invoke recursion,Offset Input
                Invoke ExitProcess,NULL
      End Start
End
同时欢迎大家分享自己的代码!
页: [1]
查看完整版本: [汇编][算法实战005]字符串全排列递归版