A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。当n=4时;
1        2        3        4
12        13        14        5
11        16        15        6
10        9        8        7

1 个回复

倒序浏览
[Java] 纯文本查看 复制代码
import java.util.Scanner;
/**
 * 
 * @author AnCheng
 *
 */
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int n = sc.nextInt();
		int[][] arr = new int[m][n];
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				arr[i][j] = sc.nextInt();
			}
		}
		sc.close();
		spiralOrderPrint(arr);
	}

	public static void spiralOrderPrint(int[][] m) {
		int r = 0;
		int c = 0;
		int tR = 0;
		int tC = 0;
		int dR = m.length - 1;
		int dC = m[0].length - 1;
		int n = m.length * m[0].length;
		for (int count = 0; count < n; tR++, tC++, dR--, dC--) {
			while (r < dR && count <= n) {
				System.out.print(m[r++][c] + " ");
				count++;
			}
			while (c < dC && count < n) {
				System.out.print(m[r][c++] + " ");
				count++;
			}
			while (r > tR && count < n) {
				System.out.print(m[r--][c] + " ");
				count++;
			}
			while (c > tC && count < n) {
				System.out.print(m[r][c--] + " ");
				count++;
			}
			c++;
			r++;
		}
	}

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马