思路
**
#include
#include
using namespace std;
int cnt =0;
// 記錄迷宮能走通的方法數,如果0,輸出-1
int n,m;
const
int maxn =
225;
// 15*15=225
bool used[maxn]
[maxn]=;
// used[i][j] 若是i,j走過就將其變為true
int migong[maxn]
[maxn]
;struct node
;node st,ed;
int x[4]
=;int y[4]
=;node way[maxn]
;// 走過的路
int wayi =0;
void
mysearch
(node node)
cnt++
;return;}
for(
int i =
0; i <
4; i++)}
}}int cntx[maxn]=;
int ansx=0;
int cnty[maxn]=;
int ansy=0;
intmain()
}}for(
int j =
1; j <=m; j++
)for
(int i =
1; i <=n; i++)}
}scanf
("%d%d%d%d"
,&st.x,
&st.y,
&ed.x,
&ed.y)
;// 下面兩個判斷做的不好,若是全0的列或者行不止乙個,這樣得到的是最後的列和行號if(
(ansx>st.x&&ansx||(ansxed.x))if
((ansy>st.y&&ansy||(ansyed.y)
) used[st.x]
[st.y]
= true;
way[wayi++
]= st;
mysearch
(st);if
(cnt==0)
printf
("-1");
return0;
}
遞迴入門 走迷宮
有乙個nm格的迷宮 表示有n行 m列 其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,檔案讀入這nm個資料和起始點 結束點 起始點和結束點都是用兩個資料來描述的,分別表示這個點的行號和列號 現在要你程式設計找出所有可行的道路,要求所走的路中沒有重複的點,走時只能是上下左右四個方向。如果...
codeup 問題 A 遞迴入門 全排列
題目描述 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 輸入 輸入乙個整數n 1 n 10 輸出 輸出所有全排列 每個全排列一行,相鄰兩個數用空格隔開 最後乙個數後面沒有空格 ...
問題 F 遞迴入門 走迷宮
題目描述 有乙個nm格的迷宮 表示有n行 m列 其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,檔案讀入這nm個資料和起始點 結束點 起始點和結束點都是用兩個資料來描述的,分別表示這個點的行號和列號 現在要你程式設計找出所有可行的道路,要求所走的路中沒有重複的點,走時只能是上下左右四個...