标题: [数值计算] [已解决]批处理如何遍历生成全部数值? [打印本页]
作者: jzsgyml 时间: 2011-7-6 00:55 标题: [已解决]批处理如何遍历生成全部数值?
一个N位数字,每位都可能是1,或者0 ,现在需要列出所有不重复的可能性数值。
例如4位数字,可能是1000,0100,0101,0111,1011.。。。。。
如果是七位,八位,可能性数可能有几千几万,能否批处理直接生成出来?
作者: CrLf 时间: 2011-7-6 08:42
生成八位二进制数的土办法:- @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
复制代码
前不久有几个相关的帖子,请搜索排列组合
作者: ArdentMan 时间: 2011-7-6 09:41
- @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
复制代码
作者: 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
本帖最后由 caruko 于 2011-7-6 16:43 编辑
完全没必要遍历,二进制数已经使用了所有可能的排列。
所以- set /a "num=1<<N"
- echo,%num%
复制代码
作者: jzsgyml 时间: 2011-7-6 20:50
一个比一个精辟,无敌了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |