老實說第一眼看到這個題,腦子裡第一時間就想到了bfs,但是最後ac真的十分艱辛,中間遇到了很多奇葩的問題。下面一一道來我在此題的收穫
題目傳送門
#include
#include
#include
#include
#include
#include
using
namespace std;
char a[10]
;char b[20]
;int dx=
;int dy=
;map<
int,string> map;
queue q;
intfind
(string s)
}int
getindex
(string s)
return res;
}int edx =
getindex
("12345678x");
char
getchar
(int idx)
}void
init()
}}}}
intmain()
s = a;
int sdx =
getindex
(s);
if(map.
count
(sdx)!=0
)else
}system
("pause");
}
教訓1
以後碰到這種不知道輸入多少個用例的以字串形式接受的題目,不要用scanf與eof搭配,因為有空格就不管用(沒空格還行),用while(gets(s)!=null)
,像我這個sb就遇到了這個問題,一直報錯output limiit exceed
(因為一直輸入不停止呀md)
教訓2
對於map可能會超時,以後遇到這樣的盡量使用map這樣的,使用康拓轉換也可,實在不行那就nmd直接map
教訓3
對於有很多資料庸碌輸入,要及時每次開始前初始化到正確的狀態,切記。
教訓4
對於那種把最終狀態給你了,初態不太清楚的如果沒思路就想著逆向思維。
教訓5
一定要仔細呀,nmd,int dx = ;int dy = ;這裡應改依次對應
{『d』,『u』,『r』,『l』},不是,睜大眼睛看好了,mmp
就這樣了,長點心吧,我是廢物,嗚嗚嗚嗚~~
HDU 1043 搜尋 A 演算法
include include include include include include using namespace std const int maxn 4e5 10 const int mlen 30 char str mlen d udlr int ha 9 int dir 4 2 ...
HDU1043 八數碼問題
include include include using namespace std 通過康托展開來hash 9 有362880 const int maxn 400000 int step maxn int p maxn 2 用於記錄與前面乙個的相對路徑 int d 10 用來統計0到9的階乘 ...
hdu1043 素數回文
整體思想可以理解為打表,可以通過如下辦法打表 但是相對比較麻煩 還可以直接使用陣列,將所有資料直接儲存進來,這種方法相對比較簡單,可以不需要使用高效的素數法 include include include include includeusing namespace std bool prime 9...