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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 找个工作那么难 初级黑马   /  2014-11-25 21:29  /  2375 人查看  /  25 人回复  /   2 人收藏 转载请遵从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技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

25 个回复

倒序浏览
二维数组,总之很麻烦……
回复 使用道具 举报
二维数组,一个大for里面嵌套四个小for,角标转换
回复 使用道具 举报
黑马的入学测试题里有这样的习题
回复 使用道具 举报
范中俊 发表于 2014-11-25 22:19
黑马的入学测试题里有这样的习题

入学测试有这样的习题?
回复 使用道具 举报
范中俊 发表于 2014-11-25 22:19
黑马的入学测试题里有这样的习题

这应该属于算法题啦,感觉放在入学测试里不太合适,哎
回复 使用道具 举报
1、 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:                                
1        2        3        4
12      13      14       5
11      16      15       6
10       9        8       7




可以在论坛上找到答案的
回复 使用道具 举报
这个数组比较绕    多看几遍吧   希望能帮到你
  1.         int size = 4;
  2.                 int arr[][] = new int[size][size];
  3.                 int i, j, k = 0, n, m;
  4.                 n = size;
  5.                 m = (n + 1) / 2;
  6.                 for (i = 0; i < n; i++)
  7.                 {
  8.                         // 顶边,从左到右,行不变列变
  9.                         for (j = i; j <= n - i - 1; j++)
  10.                                 arr[i][j] = ++k;// 输出1、2、3、4、13、14
  11.                        
  12.                         // 右边,从上到下,行变列不变
  13.                         for (j = i + 1; j <= n - i - 1; j++)
  14.                                 arr[j][n - i - 1] = ++k; // 输出5、6、7、15
  15.                        
  16.                         // 底边,从右到左,行不变列变
  17.                         for (j = n - i - 2; j >= i; j--)
  18.                                 arr[n - i - 1][j] = ++k; // 输出8、9、10、16
  19.                        
  20.                         // 左边,从下到上,行变列不变
  21.                         for (j = n - i - 2; j >= i + 1; j--)
  22.                                 arr[j][i] = ++k; // 输出11、12
  23.                 }
  24.                 for (int x=0;x<arr.length ; x++)
  25.                 {
  26.                         for (int y=0;y<arr[x].length ;y++ )
  27.                         {
  28.                                 System.out.print(arr[x][y]+"\t");
  29.                         }
  30.                         System.out.println();
  31.                 }
复制代码






       


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
很复杂的样子。。。先保存。哪天试试看能不能写出来、
回复 使用道具 举报
有点难~~先保存先来~~
回复 使用道具 举报
看着无从下手,来学习学习!
回复 使用道具 举报
244611 来自手机 中级黑马 2014-11-26 00:52:49
12#
这个我做过,广联达的笔试题,,四个循环,从左到右,从上到下,从右到左,从下到上,每次把行数,列数减一。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
很复杂的一个循环,先留下来吧
回复 使用道具 举报
米家小九 来自手机 中级黑马 2014-11-26 06:21:46
14#
我也是刚看到二维数组,还真就看到了这种格式,不过没看懂
回复 使用道具 举报
用到2维数组

  1. import java.util.Scanner;
  2. class LuoXuan3
  3. {       
  4.         public static void main(String[] args)
  5.         {       
  6.                 Scanner sc= new Scanner(System.in);
  7.                 System.out.println("输入大于0的数字");
  8.                 int num = sc.nextInt();
  9.                 fun(num);
  10.         }
  11.         public static void fun(int num)
  12.         {
  13.                 int [] [] arr =new int [num][num];
  14.                 int a = 0;int b = -1;
  15.                 int count = 0;          
  16.                 int temp1 =num;   
  17.                 int temp = 0;
  18.                 for (int z = 0;z<(num+1)/2 ; z++)
  19.                 {       
  20.                         temp1--;
  21.                         while (b<temp1) arr[a][++b] = ++count;       
  22.                         while (a<temp1) arr[++a][b] = ++count;
  23.                         while (b>temp) arr[a][--b] = ++count;
  24.                         temp++;
  25.                         while (a>temp) arr[--a][b] = ++count;
  26.                 }
  27.                 for (int m = 0;m<num ; m++)
  28.                 {
  29.                         for (int n = 0;n<num ;n++ )
  30.                         {
  31.                                 System.out.print(arr[m][n]+"\t");
  32.                         }
  33.                         System.out.println();
  34.                 }
  35.         }
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
有些麻烦,还是先看基础吧
回复 使用道具 举报
看到那两个字就真心觉得比较晕了。。。
回复 使用道具 举报
Archer 中级黑马 2014-11-26 09:45:37
18#
我之前写过过c语言的,java的完了给你写一下
回复 使用道具 举报
好难的样子,,,不会考到吧??
回复 使用道具 举报
来学习学习!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马