黑马程序员技术交流社区

标题: 求教,如何实现螺旋输出? [打印本页]

作者: 1556455422    时间: 2015-7-24 21:56
标题: 求教,如何实现螺旋输出?
就是那个百度的面试题
1    2    3    4
12  13  14  5
11  16  15  6
10   9    8   7
作者: ZeroHegel    时间: 2015-7-24 22:16
  1.                 int SIZE = 5;
  2.                 int arr[][] = new int[SIZE][SIZE];
  3.                 int i, j, k = 0, n, m;
  4.                 n = SIZE;
  5.                 m = (n + 1) / 2;
  6.                 for (i = 0; i < n; i++) {
  7.                         // 顶边,从左到右,行不变列变
  8.                         for (j = i; j <= n - i - 1; j++)
  9.                                 arr[i][j] = ++k;// 输出1、2、3、4、13、14
  10.                         
  11.                         // 右边,从上到下,行变列不变
  12.                         for (j = i + 1; j <= n - i - 1; j++)
  13.                                 arr[j][n - i - 1] = ++k; // 输出5、6、7、15
  14.                         
  15.                         // 底边,从右到左,行不变列变
  16.                         for (j = n - i - 2; j >= i; j--)
  17.                                 arr[n - i - 1][j] = ++k; // 输出8、9、10、16
  18.                         
  19.                         // 左边,从下到上,行变列不变
  20.                         for (j = n - i - 2; j >= i + 1; j--)
  21.                                 arr[j][i] = ++k; // 输出11、12
  22.                 }
  23.                 for (i = 0; i < n; i++) {
  24.                         for (j = 0; j < n; j++)
  25.                                 System.out.print(arr[i][j] + "\t");
  26.                         System.out.println("");
  27.                 }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2