[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 12楼 的帖子

每两种状态间改变一位

也许是说的  每相邻两种状态 之间只改变一位。
到百度改词条,留名


额 我回去百度百科看 ,上面是这样写的呵
而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。

[ 本帖最后由 523066680 于 2010-4-30 10:45 编辑 ]

TOP

处理结果怎么和楼主贴图不一样
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p m=请输入m:
  3. set /p n=请输入n:
  4. set /a "l=m+n,p=1<<l,p-=1,l-=1,t=1<<n"
  5. for /l %%a in (0,1,%p%) do (
  6.     set /a r=%%a%%t
  7.     if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
  8.     set b=&set "c="
  9.     set "a=%%a"
  10.     for /l %%i in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
  11.     for /l %%i in (!l!,-1,1) do (
  12.         set/a "n=%%i-1"
  13.         for %%j in (!n!) do set /a "n=!b:~%%i,1!^^!b:~%%j,1!"
  14.         set "c=!n!!c!"
  15.     )
  16.     set "Gray=!Gray! !b:~,1!!c!"
  17. )
  18. if defined Gray echo !Gray!
  19. pause
复制代码

TOP

效率高点不
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p m=请输入m:
  3. set /p n=请输入n:
  4. set /a "l=m+n-1,p=(1<<m+n)-1,t=1<<n"
  5. for /l %%i in (0,1,%p%) do (
  6.     set /a r=%%i%%t
  7.     if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
  8.     set "b="
  9.     set /a "a=%%i>>1^%%i"
  10.     for /l %%j in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
  11.     set "Gray=!Gray! !b!"
  12. )
  13. if defined Gray echo !Gray!
  14. pause
复制代码

TOP

返回列表