返回列表 发帖
第二题:
@echo off&setlocal enabledelayedexpansion
for %%a in (red green yellow blue) do set /a n+=1&set "color!n!=%%a"
for /f "skip=2 delims=" %%a in (pic.txt) do (
    set "num="&set /a n=0
    for %%b in (%%a) do (
        if defined num (
           set /a n+=1&set "!num!-!n!=%%b"
           ) else (
           set "num=%%b"
        )
    )        
)
:begin
for /l %%a in (1,1,8) do (
    set /a a=!random!%%4+1
    for %%b in (!a!) do set "#%%a=!color%%b!"
)
for /l %%a in (1,1,8) do (
    set /a a=%%a-1
    if !a! neq 0 for /l %%b in (1,1,!a!) do if !%%a-%%b! equ 1 if !#%%a! equ !#%%b! goto begin
)
for /l %%a in (1,1,8) do echo %%a:!#%%a!
pause>nul COPY

[ 本帖最后由 batman 于 2009-10-30 22:48 编辑 ]
1

评分人数

***共同提高***

TOP

对第二题暂时没有好的思路,至于不定块的问题,可以在我3楼的代码中在:begin前加入set /a n+=1,然后把后面的8全改成%n%,但这种判断返回法应该是不支持n为大数值的情况的...
***共同提高***

TOP

第三题的解

@echo off&setlocal enabledelayedexpansion
set /p str=请按顺序输入导弹的高度,中间用空格格开:
:begin
set /a n=0,m=0
for /f "tokens=1*" %%a in ("%str%") do (
    for %%c in (%%b) do (
        if %%a gtr %%c (
           set /a n+=1
           ) else (
           set /a m+=1
        )
    )
    if !n! geq !m! (
       if not defined max set /a max=%%a,num+=1
       if !max! gtr %%a set /a max=%%a,num+=1
    )
    set "str=%%b"&goto begin
)
echo 最多能拦截%num%枚导弹
pause>nulCOPY

[ 本帖最后由 batman 于 2009-10-31 00:31 编辑 ]
1

评分人数

***共同提高***

TOP

返回列表