找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14792|回复: 0

[数值计算] [分享]批处理求排列组合

[复制链接]
发表于 2010-7-28 14:47:40 | 显示全部楼层 |阅读模式
以前写的,最近看了论坛上资料版块说的提高效率的方法,改进了一下,效率提高了不少。
求7个字符排列组合时我电脑用1秒,如果是8个就慢了,差不多要11秒...但是比以前的代码快多了。
思路:假如求abc的排列组合。将b插入到a的前面、后面得到bc,cb。再将a插入到bc的前面、中间、后面,cb的前面、中间、后面,得到最终6个组合。
如果还有d,就继续对前面6个组合进行插空...
  1. @echo off&setlocal enabledelayedexpansion
  2. rem code by wankoilz from bbs.bathome.net
  3. set/p chr=请输入要排列的字符,以空格分开:
  4. set t=%time%
  5. for %%i in (%chr%) do (set a=%%i&set/a n+=1)
  6. set/a n-=1&set _%a%=ok&set chr=!chr:%a%=!
  7. (for %%1 in (%chr%) do (
  8.     set/a m+=1
  9.     for /f "delims=_= tokens=1" %%i in ('set _') do (
  10.     if not !n! equ !m! (
  11.               set _%%1 %%i=ok
  12.               set str=%%i
  13.               for %%j in (%%i) do set _!str:%%j=%%j %%1!=ok
  14.               set _%%i=
  15.     ) else (
  16.               echo %%1 %%i&set str=%%i
  17.               for %%j in (%%i) do echo !str:%%j=%%j %%1!
  18.    
  19. ))))>c.txt
  20. echo %t%
  21. echo %time%
  22. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
舒待子 + 1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:30 , Processed in 0.018192 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表