棋局定式
【問(wèn)題描述】
在“jloi-08”游戲中,還存有非常非常多的棋局定式,也就是常會(huì)用到的下棋的組合。有時(shí)在學(xué)習(xí)一個(gè)著名棋局時(shí),電腦會(huì)考一考劉先生:在這局棋里面,有多少個(gè)定式???分別是什么啊?
?
對(duì)于30~40步的普通棋局,劉先生還能回答出來(lái),可是有時(shí)候2個(gè)實(shí)力相當(dāng)?shù)拇笈O碌钠寰郑?span lang="EN-US">2000000步都有可能。如果電腦對(duì)這樣的棋局提上面的問(wèn)題時(shí),劉先生就必須寫一個(gè)程序來(lái)幫助自己了??墒?,劉先生在這方面卻…,怎么寫也寫不對(duì)。你能幫助劉先生嗎?
?
棋局是由很多step組成的,而step是由一個(gè)字符串組成的,比如Kh2或者是Nxb7。
前者表示K(king)移動(dòng)至h2格,后者表示N(knight)移動(dòng)至b7格并吃掉原有的棋子。
?
第一個(gè)字符可能有6種:K Q B N R P,而后面可能是一個(gè)坐標(biāo)或者是字符x后跟一個(gè)坐標(biāo)。
?
坐標(biāo)是由一個(gè)小寫英文字母(a~h)和一個(gè)數(shù)字(1~8)組成的。
?
如果一個(gè)棋局中完整地并連續(xù)地包含一個(gè)定式中所有的step,那么這個(gè)棋局便包含這個(gè)定式。
?
【輸入】
?
第一行2個(gè)整數(shù)n, m,表示定式的個(gè)數(shù)(1<=n<=2000)以及這個(gè)棋局所包含的步數(shù)
?
下面的n個(gè)塊(block),每塊包含:
第一行一個(gè)整數(shù)k表示定式包含的步數(shù)(1<=k<=100000, ∑k<=200000)
第二行一個(gè)字符串表示該定式的名稱(長(zhǎng)度不超過(guò)50)
下面的k行每行一個(gè)字符串表示定式中的一步
?
最后的m行每行一個(gè)字符串,表示棋局中的一步
?
【輸出】
?
按照輸入文件包含的定式的順序,輸出棋局包含的所有定式的名稱,一個(gè)一行。
?
【樣例輸入輸出】
?
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
?
不保證給出的棋局和定式符合國(guó)際象棋的規(guī)則。
?
posted on 2009-03-11 03:51
250 閱讀(144)
評(píng)論(0) 編輯 收藏 引用