BAT批处理文件中变量的排列组合

BAT批处理文件中变量的排列组合

示例1

set hanye=寒夜孤星,那么变量中这四个字,任意两个字排列,也可以自己和自己排列,有多少种排列呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do echo %%i%%j &set /a guxing+=1
echo %guxing%种排列方法
pause
效果图:


示例2

set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字排列,两位,有多少种排列呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do if "%%i" neq "%%j" echo %%i%%j &set /a guxing+=1
echo %guxing%种排列方法
pause
效果图:


示例3

set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字组合,两位,且不重复,有多少种组合呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do if "%%i" neq "%%j" if not defined %%j%%i set %%i%%j=hanyeguxing & echo %%i%%j &set /a guxing+=1
echo %guxing%种组合方法
pause
效果图:


示例4

set hanye=寒夜孤星,那么变量中这四个字,有多少种排列呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒夜孤星
:hanye
if defined han (
        set num=!han:~,1!
        if not defined ..!num! (
                set /a ye+=1
                set ..!num!=b
                set "_!ye!=!han:~,1!"&set "han=!han:~1!"
                goto hanye
        ) else (
                set "han=!han:~1!"
                goto hanye
        )
)
call:guxing
echo %xing%种排列方法
pause&exit
:guxing
set/a gu+=1
if %gu% leq %ye% for /l %%i in (1 1 %ye%) do (
        for %%j in (%~1) do set .%%j=%%j
        if not defined .%%i call :guxing "%~1 %%i"
        for /l %%k in (1 1 %ye%) do set .%%k=
        ) else (
        for /l %%l in (1 1 %ye%) do set .%%l=
        for %%m in (%~1) do set /p=!_%%m!<nul
        echo.
        set /a xing+=1
)
set /a gu-=1
效果图:


示例5

set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字排列,不限定位数,可以存在单个文字,有多少种排列呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒夜孤星
set m=0
set ye=abcdefghijklmnopqrstuvwxyz
:hanye
if "!han:~%m%,1!" neq "" (set s0=!s0! !han:~%m%,1! &set/a m+=1&goto :hanye)
set n=0
for %%i in (!s0!) do (
        for %%j in (!n!) do (
                set /a n+=1
                set "gu1=!gu1!for %%!ye:~%%j,1! in (^!s%%j^!) do (set s!n!=^!s%%j:%%!ye:~%%j,1!=^!^&"
                set "gu2=!gu2!%%!ye:~%%j,1!"
                set "gu3=!gu3!)"
                set xing1%%j=!gu1:~,-16!
                set xing2%%j=!gu2!
                set xing3%%j=!gu3!
        )
)
set n=0
:guxing
set gu1=!xing1%n%!
set gu2=!xing2%n%!
set gu3=!xing3%n%!
%gu1%
echo %gu2%
set /a num+=1
%gu3%
set/a n+=1
if !n! neq !m! goto guxing
if !n! == !m! echo %num%种排列方法 &pause
效果图:


示例6

set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字组合,不限定位数,可以存在单个文字,且不重复,有多少种组合呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒 夜 孤 星
set n=1
for %%i in (%han%) do (
        set /a i+=1 &echo %%i
        set ye!i!=%%i
)
:hanye
set /a n+=1
if not defined ye%n% goto :guxing
for /f "tokens=1* delims==" %%i in ('set gu 2^>nul') do (
        set /a x+=1
        set gu!x!=%%j!ye%n%!
)
set /a f=n-1
if not defined str!ye%n%! for /l %%i in (1,1,%f%) do (
        set /a x+=1
        set gu!x!=!ye%%i!!ye%n%!
)
set /a str!ye%n%!+=1
goto :hanye
:guxing
for /f "tokens=1* delims==" %%i in ('set gu 2^>nul') do echo %%j
set /a xing=(1^<^<%i%)-1
echo %xing%种组合方法
pause
效果图:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值