[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 terse 于 2011-5-12 00:32 编辑

怎么都这样复杂  我这样递归  效率当然不是很好
  1. @echo off&setlocal enabledelayedexpansion
  2. set "var=51 8 13 2 52 61 37 85 19 11 7 62 22 38 79"
  3. for %%i in (%var%) do set /a N+=1&set _!N!=%%i
  4. for /l %%i in (1 1 %N%) do (
  5.     set /a i=%%i+1
  6.     call :lp !_%%i!
  7. )
  8. pause&exit
  9. :lp
  10. for /l %%i in (!i! 1 %N%) do (
  11.      set /a i=%%i+1,M=%~1+_%%i
  12.      if !M! geq 103 if !M! leq 104 echo %~1+!_%%i!=!M!
  13.      if !M! lss 104 CALL%0 "%~1+!_%%i!"
  14. )
复制代码

TOP

ters这种方法会漏掉不少组合吧。
假设有1-15这15个数,在取两个数的组合中就只能得到1-2,2-3,3-4,4-5...14-15,而其它的1-3,1-4,1-5...等都漏掉了
wankoilz 发表于 2011-5-13 10:01


怎么会呢?
给个直观点
  1. @echo off
  2. set n=8
  3. for /l %%i in (1 1 %N%) do (
  4.     set /a i=%%i+1
  5.     call :lp "%%i"
  6. )
  7. pause&exit
  8. :lp
  9. for /l %%i in (%i% 1 %N%) do (
  10.      set /a i=%%i+1
  11.      echo %~1 %%i
  12.      if %%i equ %n% exit/b
  13.      CALL :Lp "%~1 %%i"
  14. )
复制代码

TOP

返回列表