题目来源:http://noi.openjudge.cn/ch0108/23/
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内逆时针顺序遍历整个数组。如图所示:
输出
按遍历顺序输出每个整数。每个整数占一行。
样例输入
1 2 3 4
5 6 7 8
9 10 11 12
样例输出
1
5
9
10
11
12
8
4
3
2
6
7
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 101
int 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;i0)
{
for(k=1;k|
参考:
http://www.cnblogs.com/huashanqingzhu/p/5666473.html