[問題] Manacher 演算法 求最長回文字串
這幾天都再研究這個算法
算法本身好像懂又好像不懂
實際測試後
忽然注意到一點
void pk()
{
int i;
int mx = 0;
int id;
for(i=1; i<n; i++)
{
if( mx > i )
p[i] = MIN( p[2*id-i], mx-i );
else
p[i] = 1;
for(; str[i+p[i]] == str[i-p[i]]; p[i]++)
;
if( p[i] + i > mx )
{
mx = p[i] + i;
id = i;
}
}
}
for(; str[i+p[i]] == str[i-p[i]]; p[i]++)
;
我不懂這句為什麼不會造成記憶體問題
實際debug看 跑到可能會錯誤時 到這句就直接跳過
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.149.112
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430832746.A.A8E.html
※ 編輯: DiLegend (36.228.149.112), 05/05/2015 21:32:58
→
05/05 21:43, , 1F
05/05 21:43, 1F
推
05/05 21:56, , 2F
05/05 21:56, 2F
→
05/05 21:59, , 3F
05/05 21:59, 3F
→
05/05 22:11, , 4F
05/05 22:11, 4F
→
05/05 22:15, , 5F
05/05 22:15, 5F
推
05/05 22:28, , 6F
05/05 22:28, 6F
→
05/06 09:47, , 7F
05/06 09:47, 7F
→
05/06 09:47, , 8F
05/06 09:47, 8F
→
05/06 10:02, , 9F
05/06 10:02, 9F
→
05/06 10:02, , 10F
05/06 10:02, 10F
推
05/06 21:08, , 11F
05/06 21:08, 11F
→
05/07 00:29, , 12F
05/07 00:29, 12F
推
05/07 14:13, , 13F
05/07 14:13, 13F