本文目录
算法描述
这是一道简单的算法题:指定一个N*N的二位矩阵,以此从下->右->上->左赋值,比如:
当N=1时:
1
当N=2时:
1 4 2 3
当N=3时:
1 8 7 2 9 6 3 4 5
当N=4时:
1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7
考察知识点
- 流控制中的条件判断与循环
- 很容易越界或出现死循环
算法分析
- 首先声明一个N*N的整形对称矩阵,所有元素默认值为0
- 对矩阵中的元素赋值,赋值总次数count={1,N*N}
- 依次从上往下,从左往右,从下往上,从右往左四轮循环赋值,每一轮遇到当前数组越界或者已赋值(数组元素大于0),表示本轮结束。
算法实现
powershell知识点
- 对称二维数组的声明方式
- 转义字符的表示
- Write-Host命令的NoNewLine参数
源脚本
function Print-RotateMatrix([int]$N) { if($N -lt 1) { return } #数组初始化 $array=new-object 'int[,]' $N,$N #矩阵的元素个数 $maxNumbers=[math]::Pow($N,2) # 矩阵赋值 $count=1 $i=0 $j=0 while($count -le $maxNumbers) { #往下赋值 while( ($j -lt $N) -and ($array[$i,$j] -eq 0)) { $array[$i,$j]=$count $count++ $j++ } $j-- $i++ #往右赋值 while( ($i -lt $N) -and ($array[$i,$j] -eq 0)) { $array[$i,$j]=$count $count++ $i++ } $j-- $i-- #往上赋值 while( ($j -ge 0) -and ($array[$i,$j] -eq 0)) { $array[$i,$j]=$count $count++ $j-- } $j++ $i-- #往左赋值 while( ($i -ge 0) -and ($array[$i,$j] -eq 0)) { $array[$i,$j]=$count $count++ $i-- } $i++ $j++ } # 打印矩阵 for($i=0;$i -lt $N;$i++){ for($j=0;$j -lt $N;$j++){ Write-Host $array[$j,$i] -NoNewline Write-Host "`t" -NoNewline } Write-Host "`n" -NoNewline } }
测试调用
Print-RotateMatrix -N 0 Print-RotateMatrix -N 1 Print-RotateMatrix -N 3 Print-RotateMatrix -N 4
本文链接: https://www.pstips.net/print-rotatematrix.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!