2012年3月23日 星期五

tioj 1573 15-puzzle

IDA*
我從以前就不大會寫= =
今天終於比較會了一點點
有兩種寫法:
第一個是limit一加一的遞增,這樣的寫法跑起來較慢,但是寫起來很快
另一個是得到limit應該增為多少,這樣可以跑的較快,但不太直觀,不好寫
而這一提有兩個癥結:
第一個要知道怎麼判無解(google一下)
另一個就是 h 函數要寫的有效率一點(而且不能寫錯阿)
-> 看除了空格以外,到達該到的地方的曼哈頓距離和
(我一直以為連空格也要算,答案雖然會是對的(如果寫第二種寫法的話),但會跑超級久,徹底 TLE,改成第一種的時候,才發現原來我的啟發式函數寫錯了= =)

第一種:http://codepad.org/h1kyWM7c
第二種:http://codepad.org/ZUSDRPFw

沒有留言:

張貼留言