jeccy (燕飞月天) 于 2006年10月28日21:37:09 星期六 提到:
我的理解,给定2维数组
1 2 3三角形判断
8 9 4
7 6 5
“螺旋式”顺序输出:1 2 3 4 5 6 7 8 9
【 在 bluexyz (数据结构是根本) 的大作中提到: 】
private
static
void
PrintNumberasSpiralOrder()
{
//
1 2 3 4
//
12 13 14 5
//
11 16 15 6
//
10 9 8 7
//
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
int
[,] a
=
new
int
[,]
{
{
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
}
}
;
//
int[,] a = new int[,] { { 1, 2, 3, 4 }, { 12, 13, 14, 5 }, { 11, 16, 15, 6 }, { 10, 9, 8, 7 } };
//
int[,] a = new int[,] { { 1, 2 }, {4,3} };
const
int
N
=
5
;
//
spiral
for
(
int
i
=
N
-
1
, j
=
0
; i
>
0
; i
--
, j
++
)
{
//
i 从最大维度数开始
//
j 从最小维度数开始
//
i--来缩小范围
//
j++来缩小范围
//
k 增长缩小因子
for
(
int
k
=
j; k
<
i; k
++
)
System.Console.Write(
"
{0}
"
, a[j, k]); Console.WriteLine(
""
);
for
(
int
k
=
j; k
<
i; k
++
)
System.Console.Write(
"
{0}
"
, a[k, i]); Console.WriteLine(
""
);
for
(
int
k
=
i; k
>
j; k
--
)
System.Console.Write(
"
{0}
"
, a[i, k]); Console.WriteLine(
""
);
for
(
int
k
=
i; k
>
j; k
--
)
System.Console.Write(
"
{0}
"
, a[k, j]); Console.WriteLine(
""
);
}
//
special case for middle element if N is odd
//
如果是奇数,则要条印中间的数。
if
(N
%
2
==
1
) System.Console.Write(a[(N
-
1
)
/
2
, (N
-
1
)
/
2
]);
}
Reference :
http://bigtiger2005.spaces.live.com/blog/cns!4e967c6fe38e7c14!141.entry?wa=wsignin1.0