→ loveme00835:可能要注意最後一列的輸出 07/05 22:11
→ netsphere:恩 謝謝l大 不過Zerojudge上顯示第一筆測資就錯了 Orz 07/05 22:13
→ loveme00835:感覺跑迴圈的地方怪怪...我看不到圖, 不過走的時候應 07/05 22:18
→ loveme00835:該是左上到右下, 行列數由小到大吧? 07/05 22:19
→ bleed1979:我用的是樓上的方法。 07/05 22:20
→ loveme00835:如果是行列遞減, 是不是存的時候也要做點手腳? 例如反 07/05 22:21
→ netsphere:是用bottom-up的DP 所以迴圈是從右下開始 07/05 22:21
→ loveme00835:著存 07/05 22:21
→ loveme00835:因為你走的方向, 跟你DP出來的值順序是相關的 07/05 22:22
→ netsphere:還是不知道錯在那 Orz 07/05 22:26
→ loveme00835:你現在走的方向是「從右下走到左上」, 但是存的地圖卻 07/05 22:28
→ loveme00835:是「從左上走到右下」在用的地圖 07/05 22:28
→ netsphere:bottom-up的DP 不就是這樣嗎? 07/05 22:29
DP[V][B]=DP[V+1][B]+DP[V][B+1] 要先有DP[V+1][B]跟DP[V][B+1]
才能算DP[V][B] 所以要dp迴圈要從右下走到左上
※ 編輯: netsphere 來自: 123.205.109.7 (07/05 22:31)
→ loveme00835:地圖存的方式, 使得你一定要用行列遞增的方式來跑迴圈 07/05 22:31
→ loveme00835:如果要遞減也是可以, 只是地圖就要「反轉」處理過 07/05 22:31
→ loveme00835:現在不是講你DP的問題, 而是資料儲存的方式 07/05 22:32
→ netsphere:我想測資給行列應該是亂序的 07/05 22:32
→ loveme00835:儲存方式跟你跑DP的方向沒有配合好 07/05 22:32
→ bleed1979:原po的方式一樣可以通過,往右下或往右上都可以。 07/05 22:34
→ bleed1979:改好的code,看algorithm的部份就可以了。 07/05 22:35
→ bleed1979:打太快了,修正︰1.往右下2.往左上都可以。 07/05 22:35
→ bleed1979:不過UVa那邊用int就可以過了,Zero這邊還蠻嚴格的。 07/05 22:36
→ loveme00835:兩種方向都能過是因為出來的值會對稱的關係吧? 07/05 22:37
→ netsphere:b大請問一下我的DP漏考慮了什麼? 07/05 22:40
→ loveme00835:超出邊界 07/05 22:42
→ bleed1979:DP部份沒有錯,錯在char Buff開不夠大。 07/05 22:45
→ bleed1979:邊界部份超出為0,所以沒差,把buff改1000原code會過。 07/05 22:46
→ netsphere:喔 我了解了 char[101] 當然不夠 XD 謝謝l大和b大 07/05 22:49
→ loveme00835:那是剛好障礙跟其他地方初始化為0的關係... 07/05 22:50
→ loveme00835:還是不要依賴全域變數的這種特性, 不然改成區域就炸了 07/05 22:51