棋局定式
【問題描述】
在“jloi-08”游戲中,還存有非常非常多的棋局定式,也就是常會用到的下棋的組合。有時在學習一個著名棋局時,電腦會考一考劉先生:在這局棋里面,有多少個定式啊?分別是什么啊?
?
對于30~40步的普通棋局,劉先生還能回答出來,可是有時候2個實力相當的大牛下的棋局,2000000步都有可能。如果電腦對這樣的棋局提上面的問題時,劉先生就必須寫一個程序來幫助自己了。可是,劉先生在這方面卻…,怎么寫也寫不對。你能幫助劉先生嗎?
?
棋局是由很多step組成的,而step是由一個字符串組成的,比如Kh2或者是Nxb7。
前者表示K(king)移動至h2格,后者表示N(knight)移動至b7格并吃掉原有的棋子。
?
第一個字符可能有6種:K Q B N R P,而后面可能是一個坐標或者是字符x后跟一個坐標。
?
坐標是由一個小寫英文字母(a~h)和一個數字(1~8)組成的。
?
如果一個棋局中完整地并連續地包含一個定式中所有的step,那么這個棋局便包含這個定式。
?
【輸入】
?
第一行2個整數n, m,表示定式的個數(1<=n<=2000)以及這個棋局所包含的步數
?
下面的n個塊(block),每塊包含:
第一行一個整數k表示定式包含的步數(1<=k<=100000, ∑k<=200000)
第二行一個字符串表示該定式的名稱(長度不超過50)
下面的k行每行一個字符串表示定式中的一步
?
最后的m行每行一個字符串,表示棋局中的一步
?
【輸出】
?
按照輸入文件包含的定式的順序,輸出棋局包含的所有定式的名稱,一個一行。
?
【樣例輸入輸出】
?
master.in
2 5
3
King's Knight
Opening
Pe4
Pe5
Nf3
3
Nimzowitsch Variation
Pc4
Pe5
Nf3
Pe4
Pe5
Nf3
Nc6
Bb5
?
master.out
?
King's Knight Opening
?
Hint
?
不保證給出的棋局和定式符合國際象棋的規則。
?
posted on 2009-03-11 03:51
250 閱讀(144)
評論(0) 編輯 收藏 引用