黑马程序员技术交流社区

标题: 求教一个打印螺旋矩阵的问题! [打印本页]

作者: Union    时间: 2014-5-20 22:21
标题: 求教一个打印螺旋矩阵的问题!
        输出 n=5 的螺旋方阵
        1  2  3  4  5
        16 17 18 19 6
        15 24 25 20 7
        14 23 22 21 8
        13 12 11 10 9  

谢谢啦!



作者: Yov正    时间: 2014-5-20 23:43

  1. public class Main {
  2.         public static void main(String[] args) {

  3.                 // 设定参数
  4.                 final int N = 7;
  5.                 final int COUNT = 11;
  6.                 // 初始化
  7.                 int mat[][] = new int[N][N];
  8.                 for (int i = 0; i < N; i++) {
  9.                         for (int j = 0; j < N; j++) {
  10.                                 mat[i][j] = 0;
  11.                         }
  12.                 }
  13.                 {// 写入
  14.                         int i = 0;
  15.                         int j = 0;
  16.                         int count = COUNT;
  17.                         mat[0][0] = count++;
  18.                         while (count < N * N + COUNT) {
  19.                                 while (j + 1 < N && mat[i][j + 1] == 0) {
  20.                                         mat[i][++j] = count++;
  21.                                 }

  22.                                 while (i + 1 < N && mat[i + 1][j] == 0) {
  23.                                         mat[++i][j] = count++;
  24.                                 }

  25.                                 while (j - 1 >= 0 && mat[i][j - 1] == 0) {
  26.                                         mat[i][--j] = count++;
  27.                                 }

  28.                                 while (i - 1 >= 0 && mat[i - 1][j] == 0) {
  29.                                         mat[--i][j] = count++;
  30.                                 }
  31.                         }
  32.                 }
  33.                 //输出
  34.                 for (int i = 0; i < N; i++) {
  35.                         for (int j = 0; j < N; j++) {
  36.                                 String out = String.valueOf(mat[i][j]);
  37.                                 String str = "     ";
  38.                                 out = str.substring(0, 5 - out.length()) + out;
  39.                                 System.out.print(out);

  40.                         }
  41.                         System.out.println();
  42.                 }

  43.         }
  44. }
复制代码
  1.    11   12   13   14   15   16   17
  2.    34   35   36   37   38   39   18
  3.    33   50   51   52   53   40   19
  4.    32   49   58   59   54   41   20
  5.    31   48   57   56   55   42   21
  6.    30   47   46   45   44   43   22
  7.    29   28   27   26   25   24   23
复制代码

作者: 彭飞    时间: 2014-5-20 23:52
好腻害的样子。。。
都不知道在说什么。
学习了。。。。。
作者: 水中月    时间: 2014-5-21 09:14
这个厉害,,,,
作者: 自闭宅男    时间: 2014-7-6 16:24
你好,我是想加入黑马可是技术分太坑了,如果可以的话,交个朋友,在这方面教教我
作者: 自闭宅男    时间: 2014-7-6 16:25
可以的话,加个Q
作者: icm    时间: 2015-12-17 22:33
怎么这么厉害啊。。




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