#include
<
stdio.h
>
int
flag
=
0
;
//
flag用来标记是否路径全部走完
int
a[
12
][
12
]
=
{{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
},
//
初始化迷宫
{
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
},
{
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
},
{
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
},
{
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
},
{
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
},
{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
}};
int
go(
int
x,
int
y)
{
a[x][y]
=
2
;
if
((x
==
10
&&
y
==
10
))
//
迷宫出口设置为10,10
flag
=
1
;
if
(flag
!=
1
&&
a[x
-
1
][y]
==
0
)
//
判断向上是否有路
go(x
-
1
,y);
//
这个go()纠结了好久,多了个return怎么都不行了
if
(flag
!=
1
&&
a[x][y
+
1
]
==
0
)
//
判断向右是否有路
go(x,y
+
1
);
if
(flag
!=
1
&&
a[x
+
1
][y]
==
0
)
//
判断向下是否有路
go(x
+
1
,y);
if
(flag
!=
1
&&
a[x][y
-
1
]
==
0
)
//
判断向左是否有路
go(x,y
-
1
);
if
(flag
!=
1
)
a[x][y]
=
0
;
return
flag;
}
main()
{
int
i,j,k,l,q;
for
(i
=
0
;i
<
12
;i
++
)
//
输出迷宫
{
for
(j
=
0
;j
<
12
;j
++
)
{
if
(a[i][j]
==
0
)
printf(
"
"
);
if
(a[i][j]
==
1
)
printf(
"
X
"
);
}
printf(
"
\n
"
);
}
printf(
"
\n
"
);
if
(go(
1
,
1
)
==
0
)
//
设置了起始点为1,1
printf(
"
没有路径!\n
"
);
else
for
(k
=
0
;k
<
12
;k
++
)
//
输出迷宫
{
for
(l
=
0
;l
<
12
;l
++
)
{
if
(a[k][l]
==
0
)
printf(
"
"
);
if
(a[k][l]
==
1
)
printf(
"
X
"
);
if
(a[k][l]
==
2
)
printf(
"
*
"
);
}
printf(
"
\n
"
);
}
}