CN-DOS貌似08年就有蛇形和螺旋矩阵的帖子,已经很久上不去了,翻了下自己写的,贴出来,没有补2位,顺时的。。。自己可以改改。
蛇形矩阵- @echo off&setlocal enabledelayedexpansion
- set flag=i&set i=1&set j=1
- set /p n=输入阶数:
- set /a nn=n*n
- for /l %%a in (1,1,%nn%) do (
- if %%a LSS 10 (set _!i!!j!= %%a) else set _!i!!j!=%%a
- if !flag!==i (if !i! GTR 1 (set/a i-=1&set/a j+=1) else (set/a j+=1&set flag=j)) else (if !j! GTR 1 (set/a j-=1&set/a i+=1) else (set/a i+=1&set flag=i))
- if !i! GTR %n% set/a i-=1&set/a j+=1
- if !j! GTR %n% set/a i+=1&set/a j-=1
- if !i! EQU %n% if defined _!i!!j! set/a j+=1&set flag=i
- if !j! EQU %n% if defined _!i!!j! set/a i+=1&set flag=j
- )
-
- for /l %%m in (1,1,%n%) do (
- for /l %%n in (1,1,%n%) do (
- set /p =!_%%m%%n! <nul
- )
- echo.
- )
- pause>nul
复制代码 螺旋矩阵- @echo off&setlocal enabledelayedexpansion
- set flag=i&set i=1&set j=1&set o=1
- set /p n=输入阶数:
- set /a nn=n*n
- set /a n1=n+1
- set _1%n1%=Sl挡&set _%n1%%n%=o顶&set _%n%0=re推
- for /l %%a in (1,1,%nn%) do (
- if %%a LSS 10 (set _!i!!j!= %%a) else set _!i!!j!=%%a
- if !flag!==i (set/a j+=!o!) else set/a i+=!o!
- if defined _!i!!j! (if !flag!==i (set flag=j&set/a i+=!o!&set/a j-=!o!) else (set flag=i&(set/a o=-!o!)&set/a i+=!o!&set/a j+=!o!))
- )
-
- for /l %%m in (1,1,%n%) do (
- for /l %%n in (1,1,%n%) do (
- set /p =!_%%m%%n! <nul
- )
- echo.
- )
- pause>nul
复制代码
|