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

追求高效的纯批置换算法: 从生成一个元素的全排列, 逐次进阶扩展到 2, 3, .... 个元素, 排除命令行窗口显示耗时, 仅数据生成时间 < 1秒 (i3 处理器)
  1. @echo off & setlocal enabledelayedexpansion & mode 160, 1000
  2. set z=1;
  3. set z
  4. for /L %%j in (2 1 6) do (
  5.     set /a k=%%j-1
  6.     set x=
  7.     for /L %%i in (1 1 !k!) do (
  8.         set t=!z:%%i=%%j!
  9.         set x=!x!!t:;=%%i;!
  10.     )
  11.     set z=!z:;=%%j;!!x!
  12.     set z
  13. )
  14. echo;complete 6
  15. REM 7个元素的全排列用带分隔符的单变量存储超出批处理变量存储极限, 只能另行处理
  16. REM 数字形式
  17. REM echo;!z:;=7;!
  18. REM for /L %%i in (1 1 6) do (
  19.     REM set t=!z:%%i=7!
  20.     REM echo;!t:;=%%i;!
  21. REM )
  22. set t7=!z:;=e;!
  23. for /L %%i in (1 1 6) do (
  24.     set t%%i=!z:%%i=e!
  25.     set t%%i=!t%%i:;=%%i;!
  26. )
  27. for /L %%i in (1 1 7) do (
  28.     for %%Q in (1:b 2:a 3:t 4:h 5:o 6:m) do for /f "tokens=1-2 delims=:" %%W in ("%%Q") do set t%%i=!t%%i:%%W=%%X!
  29.     echo;!t%%i:;= !
  30. )
  31. echo;complete 7
  32. pause
  33. exit
复制代码
4

评分人数

TOP

本帖最后由 a20150604 于 2017-4-8 02:56 编辑

Wolfram 语言
  1. Permutations[{b,a,t,h,o,m,e}]
复制代码
格式处理一下
  1. StringJoin /@ Permutations[Characters["bathome"]]
复制代码
2

评分人数

    • happy886rr: 真短,貌似你赢了。看看后边的坛友还有更短 ...技术 + 1
    • codegay: 1技术 + 1

TOP

8 楼置换算法的 JS 和 VBS 版

JS
  1. Z = "1;";
  2. for( j = 2; j <= 7; j++ ) {
  3.     t = Z;
  4.     Z = Z.replace(/;/g, j + ";")
  5.     for ( i = 1; i <= j - 1; i++ ) Z = Z + t.replace(RegExp(i, "g"), j).replace(/;/g, i + ";");
  6. }
  7. for( i = 1; i <= 7; i++ ) Z = Z.replace(RegExp(i, "g"), "bathome".substr(i - 1, 1));
  8. console.log(Z);
复制代码
VBS
  1. Z = "1;"
  2. For j = 2 To 7
  3.     t = Z
  4.     Z = Replace(Z, ";", j & ";")
  5.     For i = 1 To j - 1
  6.       Z = Z & Replace(Replace(t, i, j), ";", i & ";")
  7.     Next
  8. Next
  9. For i = 1 To 7
  10.     Z = Replace(Z, i, Mid("bathome", i, 1))
  11. Next
  12. WScript.Echo Z
复制代码
2

评分人数

    • flashercs: 批量替换速度最快,但是实用价值不佳,不是 ...技术 + 1
    • 老刘1号: 厉害,保存下慢慢学习!技术 + 1

TOP

http://www.cs.utsa.edu/~wagner/knuth/

Donald E. Knuth  
  The Art of Computer
Programming
Volume 4,
Combinatorial Algorithms
1

评分人数

TOP

返回列表