黑马程序员技术交流社区

标题: 让我搁着块石头在心头的作业题----螺旋方阵 [打印本页]

作者: 想不到了解    时间: 2015-4-6 21:54
标题: 让我搁着块石头在心头的作业题----螺旋方阵
输出 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
以下为基础课第四天作业题:左思右想,久久没头绪,路过大神帮帮出主意了-------答案看过,不甚懂。关键大神们说说自己思路!


作者: luoyu1530    时间: 2015-4-6 22:01
我想的是做循环,二阶矩阵,当x=0(横排),y++(竖排),当x=0且y=4时,x++,然后依次前进,,这方法有点蠢,勿喷
作者: ccl|r    时间: 2015-4-6 22:09
本帖最后由 ccl|r 于 2015-4-6 22:24 编辑

        public static void printLuoxuan(int n) {
                int times = (n + 1) / 2;
                int[][] arr = new int[n][n];
                int count = 1;
                for (int i = 0; i < times; i++) {
                        int x = i;
                        int y = i;
                        if (x == n / 2 && y == n / 2 && n % 2 == 1) {
                                arr[x][y] = count;
                                break;
                        }
                        while (y < n - 1 - i)
                                arr[x][y++] = count++;
                        while (x < n - 1 - i)
                                arr[x++][y] = count++;
                        while (y > i)
                                arr[x][y--] = count++;
                        while (x > i)
                                arr[x--][y] = count++;                        
                }
                for (int i = 0; i < n; i++) {
                        for (int j = 0; j < n; j++) {
                                System.out.print(arr[j] + "\t");
                        }
                        System.out.println();
                }
        }

作者: ccl|r    时间: 2015-4-6 22:11
你输入一个N,则数组有(N+1)/2圈,最大值 N*N
然后一个for循环给每一圈赋值,就像麻将,每圈赋值四次,就能构成一圈了
作者: liyanghml    时间: 2015-4-7 00:37
ccl|r 发表于 2015-4-6 22:09
public static void printLuoxuan(int n) {
                int times = (n + 1) / 2;
           ...

System.out.print(arr[j] + "\t");

应该是 输出arr【i】【j】
作者: 想不到了解    时间: 2015-4-10 23:54
感谢楼上的引导,对着答案有思绪了----以上为例:每一圈画一个四方形状------分开就是画四条边, 每边随着下一圈到来,边的长度为去掉首尾,即长度要减2.....
另附上另一位兄弟的做法,可以参考下.
<奋斗了一天的矩阵终于搞出来了~现在有点想吐>
http://bbs.itheima.com/thread-185193-1-1.html
(出处: 黑马程序员IT技术论坛)





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