返回列表 发帖
本帖最后由 batman 于 2012-3-29 09:05 编辑

参考答案
@echo off&setlocal enabledelayedexpansion
(for /l %%a in (10000,1,19999) do (
  set "str=%%a"&set "str=!str:~1!"&set "flag=五类"
  set /a a=!str:~,1!,b=!str:~1,1!,c=!str:~2,1!,d=!str:~-1!,b1=b+1,b2=b-1,c1=c+2,c2=c-2,d1=d+3,d2=d-3
  if "!d!" equ "8" set "flag=四类"
  if "!c!" equ "!d!" set "flag=四类"
  if "!a!!b!" equ "!d!!c!" set "flag=四类"
  if "!c!!d!" equ "88" set "flag=三类"
  for %%a in (!b!) do if "!str:%%a=!" equ "!a!" set "flag=三类"
  if "!a!!b!" equ "!c!!d!" set "flag=三类"
  if "!a!!c!" equ "!b!!d!" set "flag=三类"
  for %%a in (1 2) do if "!b%%a!!c%%a!!d%%a!" equ "!b%%a!!b%%a!!b%%a!" set "flag=三类"
  if "!b!!c!!d!" equ "888" set "flag=二类"
  for %%a in (!a!) do if "!str:%%a=!" equ "" set "flag=二类"
  for %%a in (1 2) do if "!a!!b%%a!!c%%a!!d%%a!" equ "!a!!a!!a!!a!" set "flag=二类"
  if "!str!" equ "8888" set "flag=一类"
  echo !flag! !str!
))>list.txt
start list.txtCOPY
***共同提高***

TOP

4个 FOR 循环 省了字符截取 一味的 IF IF

TOP

不知道有没有简洁的代码 我的太复杂了...一堆if

TOP

回复 7# batman

估计是,,,,,,,坐等答案公布。。。。。。

TOP

回复 6# QIAOXINGXING


    兄弟是不是想复杂了,这个思路应该很好理的。。。
***共同提高***

TOP

利用for的嵌套,写出指定特征形式的数字,再排除不正确的。。。。。
思路不清晰,排除得我快累死了。。。。。还不知道对不对。。。。。。。
以后再也不做这种题了。。。。。。。。。
@echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
if exist "第四类" goto :1
set "num1=0123456789"
set "num2=9876543210"
(for /l %%a in (0 1 9) do (
  if "%%a" leq "5" echo !num1:~%%a,4! & echo !num2:~%%a,4!
  if not "%%a"=="8" (
    echo %%a%%a%%a%%a
    echo %%a888
  )
))>第二类
(for /l %%a in (0 1 9) do (
  for /l %%b in (0 1 9) do (
    if not "%%b"=="8" (echo %%a%%b88)
    if not "%%b"=="%%a" (
      if not "%%b"=="8"  echo %%a%%b%%b%%b
      set /a "n=%%a-1"
      call set "n1=%%num1:~!n!,1%%"
      call set "n2=%%num2:~!n!,1%%"
      if %%a leq 6 if not "%%b"=="!n1!" if not "%%b"=="!num1:~%%a,1!"  echo  %%
b!num1:~%%a,3!
      if %%a leq 6 if not "%%b"=="!n2!" if not "%%b"=="!num2:~%%a,1!"  echo  %%
b!num2:~%%a,3!
      echo %%a%%a%%b%%b
      echo %%a%%b%%a%%b
    )
  )
))>第三类
(for /l %%a in (0 1 9) do (
  for /l %%b in (0 1 9) do (
    if not "%%b"=="%%a"  echo %%a%%b%%b%%a
    for /l %%c in (0 1 9) do (
      if not "%%a"=="%%b" if not "%%b"=="%%c"  if not "%%c"=="8" (
         if not "%%b%%c"=="67"  echo  %%a%%b%%c8
         echo %%a%%b%%c%%c
      )
    )
  )
))>第四类
:1
set /p "number=input:"
if "!number!"=="8888" echo 第一类 & goto :1
findstr  /m  "!number!"   第三类 第二类 第四类 || echo 第五类
echo -------------------------------------------------
goto :1COPY
1

评分人数

TOP

回复 4# batman


    哦 我还以为也是连续数字呢

TOP

回复 3# jinzeyu


    是的,顶楼应该描述得很清楚吧。。。
***共同提高***

TOP

有几个问题:
  如7378算四类吗
  如1331算四类吗
  如1313算三类吗
  如1133算三类吗

TOP

穷举法 挨个试..

本帖最后由 jinzeyu 于 2012-2-29 11:25 编辑
@echo off&setlocal enableDelayedExpansion&set str=0123456789876543210&set "ml=是三类&goto:eof"&for /l %%i in (1000,1,9999) do call:main %%i
:main
set i=%1
set i1=%i:~0,1%
set i2=%i:~1,1%
set i3=%i:~2,1%
set i4=%i:~3,1%
if "%i%"=="8888" echo %1%ml:三=一%
if "%i:~1%"=="888" echo %1%ml:三=二%
if "%i:~2%"=="88" echo %1%ml%
if "%i:~3%"=="8" echo %1%ml:三=四%
if "%i:~2% %i2%"=="%i:~0,2% %i3%" echo %1%ml:三=二%
if "%i:~1,2%"=="%i:~3%%i:~3%" echo %1%ml%
if "%i:~3%"=="%i3%" echo %1%ml:三=四%
for /l %%j in (0,1,16) do (
if "%1"=="!str:~%%j,4!" echo %1%ml:三=二%
if "%i:~1%"=="!str:~%%j,3!" echo %1%ml%
if "%i:~0,3%"=="!str:~%%j,3!" echo %1%ml%)
if "%i1%%i2%"=="%i4%%i3%" if not "%i1%"=="%i2%" echo %1%ml:一=四%
if "%i1%%i3%"=="%i2%%i4%" if not "%i2%"=="%i4%" echo %1%ml%
if "%i:~0,2%"=="%i:~2%" if not "%i1%"=="%i2%" echo %1%ml%
echo %1是五类COPY
1

评分人数

    • batman: 书写有点不规范PB + 11

TOP

返回列表