動(dòng)態(tài)規(guī)劃的方程大家都知道,就是
f[i,j]=min{f[i-1,j-1],f[i-1,j],f[i,j-1],f[i,j+1]}+a[i,j]
但是很多人會(huì)懷疑這道題的后效性而放棄動(dòng)規(guī)做法。
本來(lái)我還想做Dijkstra,后來(lái)變了沒(méi)二十行pascal就告訴我數(shù)組越界了……(dist:array[1..1000*1001
div 2]...)
無(wú)奈之余看了xj_kidb1的題解,剛開(kāi)始還覺(jué)得有問(wèn)題,后來(lái)豁然開(kāi)朗……
反復(fù)動(dòng)規(guī)。上山容易下山難,我們可以從上往下走,最后輸出f[n][1]。
xj_kidb1的一個(gè)技巧很重要,每次令f[i][0]=f[i][i],f[i][i+1]=f[i][1](xj_kidb1的題解還寫(xiě)錯(cuò)了)
標(biāo)簽:
動(dòng)態(tài)規(guī)劃
方程
家
上傳時(shí)間:
2014-07-16
上傳用戶:libinxny