[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
29# plp626


嗯,本质上确实是一样的...原先没注意看52兄的第三个代码,但是大概扫了一眼留下印象了吧,后来自己的思路也是这个路线的,汗

TOP

30# powerbat


我不知道有没理解对,老兄似乎是说全部列举出来再排除重复,但是这样效率太低了,假设有7个项,每个项都能多次使用而且不排除重复的所有排列=7的7次方=823543,但是题目所要求的真正的组合=!7=5040,也就是说,后者比前者少计算了八十多万次,这是不可忍受的。
所以粗看了下大家的代码,大部分是用批处理实现!7的计算方式,以节省用时

TOP

列举出来的组合数完全没重复。
排除一部分组合只是为了满足那个题目的要求

TOP

33# powerbat


噢,那是我理解问题了呵呵

TOP

各位老师的代码都好牛!但26个字母里选3个不重复排列怎么整呢,修改哪个都没成功

TOP

本帖最后由 523066680 于 2019-3-17 12:58 编辑

回复 35# ahighhand

26选3
组合
  1. @echo off
  2. call :func "abcdefghijklmnopqrstuvwxyz" "" 0
  3. pause &exit
  4. :func
  5.     setlocal
  6.     set /a v=%3
  7.     if %v% equ 3 (echo %~2 &goto :eof)
  8.     if %1  == "" (goto :eof)
  9.     set strnow=%~1
  10.     call :func "%strnow:~1%" "%~2%strnow:~0,1%" %v%+1
  11.     call :func "%strnow:~1%" "%~2" %v%
  12.     endlocal
复制代码
排列
  1. @echo off &setlocal enabledelayedexpansion
  2. set alphabet=abcdefghijklmnopqrstuvwxyz
  3. for /l %%a in (0,1,25) do set eles=!eles! !alphabet:~%%a,1!
  4. call :func "%eles%" "" 0
  5. pause &exit
  6. :func
  7.     setlocal
  8.     set /a v=%3
  9.     if %v% equ 3 ( echo %~2 &goto :eof)
  10.     set eles=%~1
  11.     for %%a in ( %eles% ) do call :func "!eles:%%a=!" "%~2%%a" %v%+1
  12.     endlocal
复制代码

TOP

回复 36# 523066680


    似曾相识的感觉,happy好像也出过这个题,当时的我(菜鸡)还解不出来

TOP

本帖最后由 523066680 于 2019-3-17 23:26 编辑

回复 37# 老刘1号

    那个帖子,我转发了一段迭代解法(摘自《高阶Perl》),若想要第N个结果、或者想要从第N个排列开始排,可以直接算,而不需要从头开始。
不过没什么人留意
http://www.bathome.net/redirect. ... 3749&pid=198745
http://www.code-by.org/viewtopic.php?p=814#p814

如果做多线程并行,这种迭代法就很好用,8核的CPU,8线程分别从不同的起点开始迭代。
如果是跑GPU,并发量就更大了,若是简单的加密应该可以利用这种方法,大量并发加速碰撞。

TOP

回复  ahighhand

26选3
组合排列
523066680 发表于 2019-3-17 12:47


谢谢版主!如果想直接输出到list.txt怎么修改更好些?
1

评分人数

TOP

回复 39# ahighhand


call :func "abcdefghijklmnopqrstuvwxyz" "" 0 > list.txt
试试这样可以吗
1

评分人数

    • 523066680: 批处理太难,学不来,学不来PB + 6
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表