Board logo

标题: [文本处理] 批处理怎样在10个数字取5个组合(不是排列)? [打印本页]

作者: h168855858    时间: 2010-10-11 10:34     标题: 批处理怎样在10个数字取5个组合(不是排列)?

【求助】10个数字(0123456789)取5个组合(是组合不是排列),输出结果

是组合,结果貌似有240个吧。。不知道如何处理。

01234
01235
01236
.
.
.
56789

求组合,非排列。...

好久没有碰代码,生疏太多了。刚才去搜索,发现大家弄的都是排列的。


把结果输出到TXT里。

ABCDE

A 0~9
B 1~9
C 2~9
D 3~9
E 4~9
F 5~9

10*9*8*7*6/(5*4*3*2*1)

一共有252组。。

假设5个数字为 A B C D E

判断, E>D>C>B>A。才给及输出


思路能想出来,但是不知道怎么写。。。

BAT里怎么写类似  

FOR i = 0 TO 9
FOR j = i + 1 TO 9

的指令?

[ 本帖最后由 h168855858 于 2010-10-11 13:19 编辑 ]
作者: h168855858    时间: 2010-10-11 10:35

把结果输出到TXT里。
作者: yangfengoo    时间: 2010-10-11 11:30

  1. @echo off &setlocal enabledelayedexpansion
  2. >pailie.txt (
  3. for /l %%a in (0,1,6) do (
  4.    set/a n=%%a+1
  5.    for /l %%b in (!n!,1,7) do (
  6.       set/a nn=%%b+1
  7.       for /l %%c in (!nn!,1,8) do (
  8.          set/a nnn=%%c+1
  9.          for /l %%d in (!nnn!,1,9) do echo,%%a%%b%%c%%d
  10.          )
  11.      )
  12.    )
  13. )
复制代码

作者: h168855858    时间: 2010-10-11 11:57

朋友,你的 txt 存数在哪?我在桌面运行,没有看到。BAT一闪而过。。
作者: h168855858    时间: 2010-10-11 11:58

ABCDE

A 0~9
B 1~9
C 2~9
D 3~9
E 4~9
F 5~9

10*9*8*7*6/(5*4*3*2*1)

一共有252组。。
作者: h168855858    时间: 2010-10-11 12:02

假设5个数字为 A B C D E

判断, E>D>C>B>A。才给及输出
作者: Batcher    时间: 2010-10-11 12:53     标题: 回复 6楼 的帖子

能否把所有的要求全部更新到顶楼?
作者: leap    时间: 2010-10-11 15:00     标题: 标题

改了试试
  1. @echo off
  2. set N=
  3. set/p N=请输入要几个组合:
  4. set nn=0
  5. :1
  6. setlocal enabledelayedexpansion
  7. set/a n=%random%%%6+1
  8. set A=A012345
  9. set B=B123456
  10. set C=C234567
  11. set D=D345678
  12. set E=E456789
  13. set En=!E:~%n%,1!
  14. set/a nd=%random%%%!n!+1
  15. set Dn=!D:~%nd%,1!
  16. set/a nc=%random%%%!nd!+1
  17. set Cn=!C:~%nc%,1!
  18. set/a nb=%random%%%!nc!+1
  19. set Bn=!B:~%nb%,1!
  20. set/a na=%random%%%!nb!+1
  21. set An=!A:~%na%,1!
  22. echo !En!
  23. echo !Dn!
  24. echo !Cn!
  25. echo !Bn!
  26. echo !An!
  27. echo !An!!Bn!!Cn!!Dn!!En!>>1.txt
  28. endlocal
  29. set/a nn=%nn%+1
  30. if %nn% equ %N% exit
  31. goto 1
复制代码
组合
  1. @echo off
  2. for /l %%i in (0,1,9) do (
  3.    for /l %%j in (0,1,9) do (
  4.       for /l %%k in (0,1,9) do (
  5.          for /l %%l in (0,1,9) do (
  6.             for /l %%m in (0,1,9) do (
  7. if %%i lss %%j (
  8.   if %%j lss %%k (
  9.     if %%k lss %%l (
  10.       if %%l lss %%m (
  11. set/p=%%i%%j%%k%%l%%m <nul>>2.txt
  12. ))))
  13. )))))
  14. pause
复制代码

[ 本帖最后由 leap 于 2010-10-12 13:49 编辑 ]
作者: h168855858    时间: 2010-10-11 15:06

怎么把结果写入到TXT里呢。?
我直接运行,没有结果。呃。。
作者: leap    时间: 2010-10-11 15:07

上面的en改成En
作者: h168855858    时间: 2010-10-11 15:30

@echo off &setlocal enabledelayedexpansion
set n=%random%%%6
set A=012345
set B=123456
set C=234567
set D=345678
set E=456789
set En=%E:~%n%,1%
set nd=%random%%%n%
set Dn=%D:~%nd%,1%
set nc=%random%%%nd%
set Cn=%C:~%nc%,1%
set nb=%random%%%nc%
set Bn=%B:~%nb%,1%
set ac=%random%%%nb%
set An=%A:~%na%,1%
echo %An%%Bn%%Cn%%Dn%%En%
pause

是这样吗?。显示不对。 12345n23456na........
作者: leap    时间: 2010-10-12 12:35     标题: 回复 11楼 的帖子

改好了在8楼,不好意思 还是个菜鸟

[ 本帖最后由 leap 于 2010-10-12 13:50 编辑 ]
作者: edmond    时间: 2010-10-12 20:00

效率好差啊
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (0,1,5) do (
  3.     for /l %%b in (1,1,6) do (
  4.          for /l %%i in (2,1,7) do (
  5.              for /l %%j in (3,1,8) do (
  6.                   for /l %%k in (4,1,9) do (
  7.                         set t=%%a%%b%%i%%j%%k
  8.                         call :del
  9.                        if defined t echo !t!&set/a r+=1
  10.                        )
  11.                    )
  12.                )
  13.             )
  14.          )
  15. echo 共计!r!
  16. pause
  17. :del
  18. for /l %%c in (1,1,8) do (
  19. set m=!t:%%c=!
  20. set m=!m:0=9!
  21. if !m! lss 1000 (set "t=")
  22. if %%k lss %%j  (set "t=")
  23. if %%j lss %%i  (set "t=")
  24. if %%i lss %%b  (set "t=")
  25. if %%b lss %%a  (set "t=")
  26. )  
复制代码

作者: qzwqzw    时间: 2010-10-12 23:53

只有3楼的代码思路是正确的
可惜少了一层循环只取了4个数
稍作修改
  1. @echo off &setlocal enabledelayedexpansion
  2. (
  3. for /l %%a in (0,1,6) do (
  4. set/a n=%%a+1
  5. for /l %%b in (!n!,1,7) do (
  6. set/a nn=%%b+1
  7. for /l %%c in (!nn!,1,8) do (
  8. set/a nnn=%%c+1
  9. for /l %%d in (!nnn!,1,8) do (
  10. set/a nnnn=%%d+1
  11. for /l %%e in (!nnnn!,1,9) do echo,%%a%%b%%c%%d%%e
  12. )
  13. )
  14. )
  15. )
  16. ) >pailie.txt
  17. type pailie.txt
  18. if not "%cmdcmdline:"=%"=="cmd.exe " pause
复制代码

作者: lxyu521    时间: 2011-9-9 15:00

求楼上的大侠们给个批处理,级太低,不能发到出题区。
1~9九个数字取五个进行组合,数字不重复,
1~9九个数字取三个进行组合,数字不重复,
求:最少要用多少组五个数的组合可包含下所有三个数字的组合?就是五个数字组合和三个数字组合的共集,,,
作者: wc726842270    时间: 2011-9-9 17:26

回复 15# lxyu521


    难道讨论区也不让你发贴?
作者: lxyu521    时间: 2011-9-9 18:25

大侠们帮帮菜鸟啊
作者: lxyu521    时间: 2011-9-9 18:30

谢谢wc726842270 ,我以为只有出题区才是问问题的呢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2