1. 程式人生 > >今天開始寫dp

今天開始寫dp

最大值 簡單 寫法 問題 return 記憶 不容易 超時 nbsp

其實昨天也在寫,只是全都wa了。。。好不容易過了滑雪。總的來講是記憶化搜索與dp,卡在了遞推的寫法上。還是沒有具體理解。最後莫名其妙寫成了dfs,果不其然超時了。目前理解是,開始所有點清0從一個起始點開始,起始點vis為四周比他低的點中vis最大值加一。開始所有點都為0?沒關系 dp(x + dx[i],y + dy[i]); vis[x][y] = max(vis[x][y],vis[x + dx[i]][y + dy[i]]+ 1);dxdy只是簡單的循環遍歷。這樣每個都能找下去,直到沒有符合的點。 if(vis[x][y] > 0)
return vis[x][y];還有這一句,放在遞歸開頭。我這裏寫的有些多余,對於全局數組記錄,return值沒有必要,為空也行。不過有返回值也可以在遞歸中寫的方便一點,不用分成兩句。

又寫了道並查集,中間雖然問題不斷,不過最後也a了,對並查集的理解並沒有問題。

今天開始寫dp