返回列表 发帖

回复 12楼 的帖子

每两种状态间改变一位

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


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

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

TOP

处理结果怎么和楼主贴图不一样
@echo off&setlocal enabledelayedexpansion
set /p m=请输入m:
set /p n=请输入n:
set /a "l=m+n,p=1<<l,p-=1,l-=1,t=1<<n"
for /l %%a in (0,1,%p%) do (
    set /a r=%%a%%t
    if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
    set b=&set "c="
    set "a=%%a"
    for /l %%i in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
    for /l %%i in (!l!,-1,1) do (
        set/a "n=%%i-1"
        for %%j in (!n!) do set /a "n=!b:~%%i,1!^^!b:~%%j,1!"
        set "c=!n!!c!"
    )
    set "Gray=!Gray! !b:~,1!!c!"
)
if defined Gray echo !Gray!
pauseCOPY

TOP

效率高点不
@echo off&setlocal enabledelayedexpansion
set /p m=请输入m:
set /p n=请输入n:
set /a "l=m+n-1,p=(1<<m+n)-1,t=1<<n"
for /l %%i in (0,1,%p%) do (
    set /a r=%%i%%t
    if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
    set "b="
    set /a "a=%%i>>1^%%i"
    for /l %%j in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
    set "Gray=!Gray! !b!"
)
if defined Gray echo !Gray!
pauseCOPY

TOP

返回列表