找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29426|回复: 7

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

[复制链接]
发表于 2011-7-6 00:55:46 | 显示全部楼层 |阅读模式
一个N位数字,每位都可能是1,或者0   ,现在需要列出所有不重复的可能性数值。

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

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

评分

参与人数 1PB +2 收起 理由
zm900612 + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-7-6 08:42:28 | 显示全部楼层
生成八位二进制数的土办法:
  1. @echo off
  2. (echo 1
  3. echo 0)>排列组合.txt
  4. (for /l %%a in (1 1 7) do (
  5.    for /f %%b in (排列组合.txt) do (
  6.       echo %%b1
  7.       echo %%b0
  8.    )>>tmp.txt
  9.    move tmp.txt 排列组合.txt
  10. ))>nul
复制代码
前不久有几个相关的帖子,请搜索排列组合

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-7-6 09:41:21 | 显示全部楼层

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set /P Num=请输入位数:
  3. For /L %%I in (%Num%,-1,1) Do Set /A "Max+=1<<(%%I-1)"
  4. (For /L %%I in (0,1,%Max%) Do (
  5.   Set /A a=%%I&set "Number="
  6.   For /L %%J in (1,1,%Num%) Do (
  7.     Set /A b=a%%2,a=a/2
  8.     Set "Number=!b!!Number!"
  9.   )
  10.   Echo !Number!
  11. ))>List.txt
  12. Start List.txt
复制代码

评分

参与人数 2技术 +2 收起 理由
mstsc + 1 很强大
zm900612 + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-7-6 09:50:48 | 显示全部楼层
楼上神了,完美输出解决
发表于 2011-7-6 12:50:26 | 显示全部楼层
>一个N位数字,每位都可能是1,或者0   ,现在需要列出所有不重复的可能性数值。
>例如4位数字,可能是1000,0100,0101,0111,1011.。。。。。
>如果是七位,八位,可能性数可能有几千几万,能否批处理直接生成出来?

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

二进制的话不用往排列组合上考虑啦。。。就是自然数。。。
发表于 2011-7-6 13:21:44 | 显示全部楼层
很强大,我这个新手一点都不懂
发表于 2011-7-6 16:41:17 | 显示全部楼层
本帖最后由 caruko 于 2011-7-6 16:43 编辑

完全没必要遍历,二进制数已经使用了所有可能的排列。
所以

  1. set /a "num=1<<N"
  2. echo,%num%
复制代码
 楼主| 发表于 2011-7-6 20:50:53 | 显示全部楼层
一个比一个精辟,无敌了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:04 , Processed in 0.017937 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表