标题: [文本处理] 批处理怎样在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
- @echo off &setlocal enabledelayedexpansion
- >pailie.txt (
- for /l %%a in (0,1,6) do (
- set/a n=%%a+1
- for /l %%b in (!n!,1,7) do (
- set/a nn=%%b+1
- for /l %%c in (!nn!,1,8) do (
- set/a nnn=%%c+1
- for /l %%d in (!nnn!,1,9) do echo,%%a%%b%%c%%d
- )
- )
- )
- )
复制代码
作者: 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 标题: 标题
改了试试- @echo off
- set N=
- set/p N=请输入要几个组合:
- set nn=0
- :1
- setlocal enabledelayedexpansion
- set/a n=%random%%%6+1
- set A=A012345
- set B=B123456
- set C=C234567
- set D=D345678
- set E=E456789
- set En=!E:~%n%,1!
- set/a nd=%random%%%!n!+1
- set Dn=!D:~%nd%,1!
- set/a nc=%random%%%!nd!+1
- set Cn=!C:~%nc%,1!
- set/a nb=%random%%%!nc!+1
- set Bn=!B:~%nb%,1!
- set/a na=%random%%%!nb!+1
- set An=!A:~%na%,1!
- echo !En!
- echo !Dn!
- echo !Cn!
- echo !Bn!
- echo !An!
- echo !An!!Bn!!Cn!!Dn!!En!>>1.txt
- endlocal
- set/a nn=%nn%+1
- if %nn% equ %N% exit
- goto 1
复制代码
组合- @echo off
- for /l %%i in (0,1,9) do (
- for /l %%j in (0,1,9) do (
- for /l %%k in (0,1,9) do (
- for /l %%l in (0,1,9) do (
- for /l %%m in (0,1,9) do (
- if %%i lss %%j (
- if %%j lss %%k (
- if %%k lss %%l (
- if %%l lss %%m (
- set/p=%%i%%j%%k%%l%%m <nul>>2.txt
- ))))
- )))))
- 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
效率好差啊
- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (0,1,5) do (
- for /l %%b in (1,1,6) do (
- for /l %%i in (2,1,7) do (
- for /l %%j in (3,1,8) do (
- for /l %%k in (4,1,9) do (
- set t=%%a%%b%%i%%j%%k
- call :del
- if defined t echo !t!&set/a r+=1
- )
- )
- )
- )
- )
- echo 共计!r!
- pause
- :del
- for /l %%c in (1,1,8) do (
- set m=!t:%%c=!
- set m=!m:0=9!
- if !m! lss 1000 (set "t=")
- if %%k lss %%j (set "t=")
- if %%j lss %%i (set "t=")
- if %%i lss %%b (set "t=")
- if %%b lss %%a (set "t=")
- )
复制代码
作者: qzwqzw 时间: 2010-10-12 23:53
只有3楼的代码思路是正确的
可惜少了一层循环只取了4个数
稍作修改- @echo off &setlocal enabledelayedexpansion
- (
- for /l %%a in (0,1,6) do (
- set/a n=%%a+1
- for /l %%b in (!n!,1,7) do (
- set/a nn=%%b+1
- for /l %%c in (!nn!,1,8) do (
- set/a nnn=%%c+1
- for /l %%d in (!nnn!,1,8) do (
- set/a nnnn=%%d+1
- for /l %%e in (!nnnn!,1,9) do echo,%%a%%b%%c%%d%%e
- )
- )
- )
- )
- ) >pailie.txt
- type pailie.txt
- 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 |