今天在和同學討論之後總算是稍微入門了dfs。
明白了幾個之前一直沒注意或者說是沒有明白的問題。
1,dfs執行的順序應該是第乙個遞迴呼叫返回後才執行後面一句例如:
dfs
(x+1
,y);
//得他執行完了(得到了返回的結果哪怕是 return ;)才能執行下面的
dfs(x-
1,y)
;dfs
(x,y+1)
;dfs
(x,y-1)
;
這種經典的四個方向的深搜就是等第乙個dfs執行完,得到返回的結果以後才可以繼續執行。也就是說深搜是乙個人在搜尋2 注意到無限遞迴的原因可能不僅僅是沒有遞迴終止,還可能是終止條件模糊。這裡放上乙個錯誤的**:
題目:洛谷p1683入門
#include
using
namespace std;
char c[25]
[25];
int w, h;
int r, l;
int ans =0;
int dx[5]
=;int dy[5]
=;boolin(
int x,
int y)
void
dfs(
int x,
int y,
int t)}}
intmain()
// for(int i = 1; i <= h; i++)
// cout
(r, l,1)
; cout << ans << endl;
return0;
}
先不說題目的意思和,自己的做法,就看這個**為什麼會無限遞迴。
在題目的圖中:
在標註的區域內可能左右不停的移動搜尋,那麼自然無限遞迴了
所以,在這裡,或者說大部分的題目當中一定要慎重考慮是不是要標記已經搜尋過的點
3,關於回溯的問題:
像這道題目自然是不用回溯的,因為無論通過哪條路徑走到這塊瓷磚上面,都只能計算一次。
但是有些題目,比如:尋找乙個點到另乙個點的最短路徑這種,那麼,這個點必須要可以被其他的路徑走過,因為只有這樣,才可以找到最短的路徑。要不然,因為你這個點被搜過了,然後其他的路徑就沒辦法通過這個點了,那肯定是找不到最短路徑的!!!
稍微總結一下
其實整個程式16日的時候應該已經搞得差不多,文件也已經比較詳細。但是由於這個禮拜又是筆試又是面試,所以都沒有時間review整個程式。今天看了一下,改了一些輸出檔案的位置,基本上完成了所有任務了。程式放在 http xiao 81 svn auto testing 下。其中包括三個可執行指令碼 1....
pytorch入門1 2(稍微高階點的操作)
承接上一節,繼續來學一下更加高階那麼一點點的操作。a torch.rand 2,3,4 隨機生成乙個張量 a.view 1,2 把張量變成含有兩列的張量,行數程式自己算 a.reshape 1,2 把張量變成含有兩列的張量,行數程式自己算 a.numpy 轉換成numpy的陣列 torch.from...
ajax的幾個坑,稍微留意
重定向問題!所謂重定向問題,就是說,你訪問乙個url的時候,伺服器無法斷定訪問的正確位置,就回發給瀏覽器,然後瀏覽器就自行判斷,給出重定向的位置,這個問題現在還沒有解決,因為這個是瀏覽器自動決定的,暫時沒有辦法,除非是在伺服器端想辦法。坑二 跨域,就是跨不同的伺服器位址進行訪問。這個已經有解決辦法了...