批处理之家's Archiver

jzsgyml 发表于 2011-7-6 00:55

[已解决]批处理如何遍历生成全部数值?

一个N位数字,每位都可能是1,或者0   ,现在需要列出所有不重复的可能性数值。

例如4位数字,可能是1000,0100,0101,0111,1011.。。。。。

如果是七位,八位,可能性数可能有几千几万,能否批处理直接生成出来?

CrLf 发表于 2011-7-6 08:42

生成八位二进制数的土办法:[code]@echo off
(echo 1
echo 0)>排列组合.txt
(for /l %%a in (1 1 7) do (
   for /f %%b in (排列组合.txt) do (
      echo %%b1
      echo %%b0
   )>>tmp.txt
   move tmp.txt 排列组合.txt
))>nul[/code]前不久有几个相关的帖子,请搜索排列组合

ArdentMan 发表于 2011-7-6 09:41

[code]
@Echo Off&SetLocal EnableDelayedExpansion
Set /P Num=请输入位数:
For /L %%I in (%Num%,-1,1) Do Set /A "Max+=1<<(%%I-1)"
(For /L %%I in (0,1,%Max%) Do (
  Set /A a=%%I&set "Number="
  For /L %%J in (1,1,%Num%) Do (
    Set /A b=a%%2,a=a/2
    Set "Number=!b!!Number!"
  )
  Echo !Number!
))>List.txt
Start List.txt
[/code]

jzsgyml 发表于 2011-7-6 09:50

楼上神了,完美输出解决

slore 发表于 2011-7-6 12:50

>一个N位数字,每位都可能是1,或者0   ,现在需要列出所有不重复的可能性数值。
>例如4位数字,可能是1000,0100,0101,0111,1011.。。。。。
>如果是七位,八位,可能性数可能有几千几万,能否批处理直接生成出来?

直接把1到8的二进制形式打印就行。。。

二进制的话不用往排列组合上考虑啦。。。就是自然数。。。

mstsc 发表于 2011-7-6 13:21

很强大,我这个新手一点都不懂

caruko 发表于 2011-7-6 16:41

[i=s] 本帖最后由 caruko 于 2011-7-6 16:43 编辑 [/i]

完全没必要遍历,二进制数已经使用了所有可能的排列。
所以[code]
set /a "num=1<<N"
echo,%num%
[/code]

jzsgyml 发表于 2011-7-6 20:50

一个比一个精辟,无敌了!

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.