黑马程序员技术交流社区

标题: 螺旋打印一个n阶方阵 [打印本页]

作者: 亦如梦幻泡影    时间: 2015-7-29 22:52
标题: 螺旋打印一个n阶方阵

/*
* 输出 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
*/
public class ForDemo03 {
        public static void main(String[] args) {
                int n = 5;
                int x = n;
                int[][] arr = new int[x][x];
                int k = 0;
                for (int i = 0; i < x; i++) {
                        // 从左到右行不变,列变
                        for (int j = i; j < x - i; j++) {
                                arr[i][j] = ++k;
                        }
                        // 右边从上向下列不变,行变
                        for (int j = i + 1; j < x - i; j++) {
                                arr[j][x - i - 1] = ++k;
                        }
                        // 底部从右向左行不变,列变
                        for (int j = x - i - 2; j >= i; j--) {
                                arr[x - i - 1][j] = ++k;
                        }
                        // 左边从下向上列不变,行变
                        for (int j = x - i - 2; j >= i + 1; j--) {
                                arr[j][i] = ++k;
                        }
                }
                for (int i = 0; i < x; i++) {
                        for (int j = 0; j < x; j++) {
                                System.out.print(arr[i][j] + "\t");
                        }
                        System.out.println();
                }
        }
}

作者: 曾云鹏    时间: 2015-7-29 23:03
正在找这个,多谢楼主
作者: 江峰    时间: 2015-7-29 23:07
好,赞。。。。。。
作者: 黄成祚    时间: 2015-7-29 23:09
学习一下
作者: CharnLau    时间: 2015-7-29 23:14
这道题我的伤啊!
当时看作业要求,使用之前学到的知识来做这道题,当时还没教二维数组,虽然早就已经会二维数组,知道二位数组能做出来,就是不用,结果想破脑袋都做不出来,放学的时候导师来了一句,这个要用二位数组。
作者: 凶狠搞Android    时间: 2015-7-29 23:58
看了好多遍,都没有看懂啊!!!!是不是逻辑思维能力太弱了,是最大的硬伤




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