任給一個整數n,建立一個螺旋形矩陣A[n][n]。
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
public
?
class
?Main?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????
//
?TODO?Auto-generated?method?stub
????????
int
?n
=
5
;
????????
int
?[][]table
=
new
?
int
?[n
+
2
][n
+
2
];
????????
//
初始化
????????
int
?i,j;

????????
for
(i
=
0
;i
<=
n
+
1
;i
++
)?
{
????????????
for
(j
=
0
;j
<=
n
+
1
;j
++
)
????????????????table[i][j]
=-
1
;
????????}
????????
for
(i
=
1
;i
<=
n;i
++
)?
{
????????????
for
(j
=
1
;j
<=
n;j
++
)
????????????????table[i][j]
=
0
;
????????}
????????
//
創建
????????
????????
int
?row
=
1
;
int
?column
=
1
;
int
?k;
???????
//
?table[1][1]=1;
????????
int
?dire
=
0
;
//
0右,1下,2左,3上
????????
for
(k
=
1
;k
<=
n
*
n;)?
{
????????????
if
(dire
==
0
)?
{
//
方向為右
????????????????table[row][column]
=
k
++
;

????????????????
if
(table[row][column
+
1
]
==
0
)
{
????????????????????column
++
;

????????????????}
else
{
????????????????????dire
=
1
;
//
改方向為下
????????????????????row
++
;
????????????????}
????????????????
continue
;
????????????}
????????????
if
(dire
==
1
)?
{
//
方向為下
????????????????table[row][column]
=
k
++
;

????????????????
if
(table[row
+
1
][column]
==
0
)
{
????????????????????row
++
;

????????????????}
else
{
????????????????????dire
=
2
;
//
改方向為左
????????????????????column
--
;
????????????????}
?????????????????
continue
;
????????????}
????????????
if
(dire
==
2
)?
{
//
方向為左
????????????????table[row][column]
=
k
++
;

????????????????
if
(table[row][column
-
1
]
==
0
)
{
????????????????????column
--
;

????????????????}
else
{
????????????????????dire
=
3
;
//
改方向為右
????????????????????row
--
;
????????????????}
?????????????????
continue
;
????????????}
????????????
if
(dire
==
3
)?
{
//
方向為上
????????????????table[row][column]
=
k
++
;

????????????????
if
(table[row
-
1
][column]
==
0
)
{
????????????????????row
--
;

????????????????}
else
{
????????????????????dire
=
0
;
//
改方向為右
????????????????????column
++
;
????????????????}
?????????????????
continue
;
????????????}
????????}
????????
????????
//
輸出
????????
for
(row
=
1
;row
<=
n;row
++
)?
{
????????????
for
(column
=
1
;column
<=
n;column
++
)
????????????????System.out.print(table[row][column]
+
"
????
"
);
????????????System.out.println();}
????????
????}
}
當然,這個程序還有很多可以優化的地方。在此就不多說了。
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



























































































