黑马程序员技术交流社区
标题:
让我搁着块石头在心头的作业题----螺旋方阵
[打印本页]
作者:
想不到了解
时间:
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