演算法筆記 codeup 遞迴入門 走迷宮

2021-10-06 16:03:07 字數 1215 閱讀 3164

思路

**

#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個資料和起始點 結束點 起始點和結束點都是用兩個資料來描述的,分別表示這個點的行號和列號 現在要你程式設計找出所有可行的道路,要求所走的路中沒有重複的點,走時只能是上下左右四個...