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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xuecmg 中级黑马   /  2016-2-24 17:04  /  730 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xuecmg 于 2016-2-24 17:14 编辑
  1. /*
  2. * 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
  3. *
  4. * 1        2        3        4
  5. *12        13        14        5
  6. *11        16        15        6
  7. *10        9        8        7
  8. **/
  9. public class Exam6 {

  10.         public static void main(String[] args) {
  11.                 int[][] arr = new int[6][6];        //创建n维的二维数组
  12.                 int num = 1;                                        //设置螺旋数字初始值
  13.                 int layer = 0;                                        //设置开始螺旋的层数,0代表第外层
  14.                 diguiluoxuan(arr, num, layer);        //调用方法,生成以num为初始值,从第layer层开始的螺旋数字
  15.                 for (int i = 0; i < arr.length; i++) {
  16.                         for (int j = 0; j < arr.length; j++) {
  17.                                 System.out.print(arr[i][j] + "\t");
  18.                         }
  19.                         System.out.println();
  20.                 }
  21.         }

  22.         public static void diguiluoxuan(int[][] arr, int num, int layer) {
  23.                 for (int i = layer; i <= arr.length - 1 - layer; i++) {                //生成当前层的上面
  24.                         arr[layer][i] = num++;
  25.                 }
  26.                 for (int i = layer+1; i <= arr.length - 1 - layer; i++) {        //生成当前层的右面
  27.                         arr[i][arr.length - 1 - layer] = num++;
  28.                 }
  29.                 for (int i = arr.length -2 - layer; i >= layer; i--) {                //生成当前层的下面
  30.                         arr[arr.length - 1 - layer][i] = num++;
  31.                 }
  32.                 for (int i = arr.length -2 - layer; i >= layer+1; i--) {        //生成当前层的左面
  33.                         arr[i][layer] = num++;
  34.                 }
  35.                 if ((arr.length - 1)/2 - layer  <= 0) {        //停止条件。
  36.                         return;
  37.                 }
  38.                 diguiluoxuan(arr, num, ++layer);        //递归调用,计算下一层
  39.         }
  40.         

  41. }
复制代码

QQ图片20160224170230.png (4.17 KB, 下载次数: 17)

QQ图片20160224170230.png

1 个回复

倒序浏览
谢谢,学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马