题目来源:
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内逆时针顺序遍历整个数组。如图所示:
输出
按遍历顺序输出每个整数。每个整数占一行。样例输入
1 2 3 45 6 7 89 10 11 12
样例输出
159101112843267
PHP实现
$a = [ [1,2,3,4], [5,6,7,8], [9,10,11,12]];$row = count($a);$col = count($a[0]);$i=0;$j=0;$count = $row * $col;while ($count > 0){ //打印最左边一列 for($k=1;$k<$row; $k++){ $count--;echo $a[$i][$j] .PHP_EOL;$i++; } //打印最下边一行 for($k=1;$k<$col; $k++){ $count--;echo $a[$i][$j].PHP_EOL;$j++; } //打印最右边一列 for($k=1;$k<$row; $k++){ $count--;echo $a[$i][$j].PHP_EOL;$i--; } //打印最上边一行 for($k=1;$k<$col; $k++){ $count--;echo $a[$i][$j].PHP_EOL;$j--; } $row-=2;//走完一圈,行数减2 $col-=2;//走完一圈,列数减2 $i++;//最外一圈不用再次输出 $j++;//最外一圈不用再次输出 if($row == 1){ for($k=0;$k<$col; $k++){ $count--;echo $a[$i][$j].PHP_EOL;$j++; } }elseif($col == 1){ for($k=0;$k<$row; $k++){ $count--;echo $a[$i][$j].PHP_EOL;$i++; } }}
可以调整代码实现原题目里的示例顺序输出。
C语言实现
#include#define maxN 101int main(int argc, char *argv[]){ int row,col,i,j,k; int a[maxN][maxN]; int count; printf("请输入行数 列数:\n"); scanf("%d%d",&row,&col); printf("请输入%d*%d矩阵:\n", row, col); for(i=0;i 0) { for(k=1;k
参考: