问题描述:罗密欧与朱丽叶身处一个m×n的方格迷宫中,如图5-6所示.每个方格表示迷宫中的一个房间.这m×n个房间中有一些房间是封闭的,不允许任何人进入.在迷宫中任何位置均可沿8个方向进入未封闭的房间.罗密欧位于迷宫的(p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路.在抵达朱丽叶之前,他必须对所有未封闭的房间各走一次,而且要使到达朱丽叶的转弯次数为最少.每改变一次前进方向算作转弯一次.请设计一个算法,帮助罗密欧找出这样一条道路.
算法设计:对于给定的罗密欧与朱丽叶的迷宫,计算罗密欧通向朱丽叶的所有最少转弯道路.
数据输入:由文件input.txt给出输入数据.第1行有3个正整数n、m、k,分别表示迷宫的行数、列数和封闭的房间数.接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号.最后的2行,每行也有2个正整数,分别表示罗密欧所处的方格(p,q)和朱丽叶所处的方格(r,s).
结果输出:将计算的罗密欧通向朱丽叶的最少转弯次数和有多少条不同的最少转弯道路输出到文件output.txt.文件的第1行是最少转弯次数.第2行是不同的最少转弯道路数.接下来的n行每行m个数,表示迷宫的一条最少转弯道路.A[i][j]=k表示第k步到达方格(i,j):A[i][j]=-1表示方格(i,j)是封闭的.
如果罗密欧无法通向朱丽叶,则输出“NoSolution!".