题目描述
给定一个 rowrow 行 colcol 列的整数数组 array,要求从 array[0][0] 元素开始,按回形从外向内顺时针顺序遍历整个数组
输入描述
输入的第一行上有两个整数,依次为 rowrow 和 colcol。
余下有 rowrow 行,每行包含 colcol 个整数,构成一个二维整数数组。
(注:输入的 rowrow 和 colcol 保证 0 < row < 100, 0 < col < 1000<row<100,0<col<100。每个整数在int范围内。)
输出描述
按遍历顺序输出每个整数。每个整数占一行。
样例输入 1
4 4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
样例输出 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
思路:额,这题写过好几次了,就不过多说明了。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner read = new Scanner(System.in);
int n = read.nextInt();
int m = read.nextInt();
int[][] num = new int[n][m];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
num[i][j] = read.nextInt();
}
int up = 0;
int down = num.length-1;
int left = 0;
int right = num[0].length-1;
while(true)
{
for(int i=left;i<=right;i++)//往右
{
System.out.println(num[up][i]);
}
if(++up>down)
break;
for(int i=up;i<=down;i++)
{
System.out.println(num[i][right]);//xia
}
if(--right<left)
break;
for(int i=right;i>=left;i--)
{
System.out.println(num[down][i]);
}
if(--down<up)
break;
for(int i=down;i>=up;i--)
{
System.out.println(num[i][left]);
}
if(++left>right)
break;
}
read.close();
}
}