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

© LTT 中级黑马   /  2015-4-29 22:14  /  268 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

拔高选做题,如果你把之前所有的知识都掌握了,可以思考一下这道题,本题不要求必须完成)
        输出 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
       

1 个回复

倒序浏览
我还在看面向对象的视频,掌握的知识还不多。。
我的思路是新建一个5×5二维数组,初始化为螺旋方阵,然后遍历打印输出。
运行ok,经测试可以输出任意n×n的螺旋方阵。
  1. public class A4_3{
  2.         public static void main(String[] args){
  3.                 int [][] arr = new int [5][5] ;
  4.                 setArr(arr);
  5.                 printArr(arr);
  6.         }
  7.         //定义一个函数来初始化数组成螺旋方阵
  8.         static void setArr(int[][] arr)
  9.         {
  10.                 //用x和y来记录数组的下标
  11.                 int x=0;
  12.                 int y=-1;
  13.                 int num = arr.length;
  14.                 //用count来记录每次要往数组中赋值的数
  15.                 int count = 1;
  16.                 //可以把赋值过程看成n个逆时针循环,5×5方阵则n为5
  17.                 for(int length=num;length>1;length--)
  18.                 {
  19.                         //每个循环四个步骤,下标从左到右
  20.                         while(y<length-1)
  21.                         arr[x][++y]=count++;
  22.                         //下标从上到下
  23.                         while(x<length-1)
  24.                         arr[++x][y]=count++;
  25.                         //下标从右到左
  26.                         while(y>num-length)
  27.                         arr[x][--y]=count++;
  28.                         //下标从下到上
  29.                         while(x>num-length+1)
  30.                         arr[--x][y]=count++;
  31.                 }
  32.         }
  33.         //打印数组函数
  34.         static void printArr(int [][] arr)
  35.         {
  36.                 for(int i=0;i<arr.length;i++)
  37.                 {
  38.                         for(int j=0;j<arr.length;j++)
  39.                         {
  40.                                 System.out.print(arr[i][j]+"\t");
  41.                         }
  42.                         System.out.println();
  43.                 }
  44.         }
  45. }
复制代码

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