#19144: 解題心得


wj654cj86 (屠屠)

School : Not Student
ID : 43055
IP address : [220.128.178.162]
Last Login :
2019-09-06 10:00:41
c422. 中國象棋棋譜記錄 -- Rekkursion | From: [220.128.178.162] | Post Date : 2019-09-06 14:37

輸入棋盤這邊C/C++注意建議別用靜態陣列

有些許問題

建議用動態陣列

 

輸入棋盤時我為了記住上一步的棋盤狀況所以宣告了兩個棋盤陣列

為了避免整個陣列搬運問題我另外宣告了兩個指標來做互換輸入讀取用

例如當第一個棋盤輸入到y

然後x和y指向的位址交換

再把第二個棋盤輸入到y

這樣x就是上一步的棋盤 y就是當前棋盤

 

再來比對兩個棋盤找哪個兩個位置不一樣

棋子走了之後原本位置一定是空的

所以檢測y棋盤的兩個位置哪個是空的就能知道從哪移動到哪

 

再來判斷玩家和棋子種類

當然你也可以用不數來判斷玩家

但我統一在這步驟判斷

因為我也要知道棋子種類

當判斷完之後要注意如果是另一方要記得把兩個位置的座標上下左右顛倒

 

輸出前兩個字

根據題目可知道士和象不能輸出前後

所以士和象直接輸出棋子種類和路線

其他判斷出同一路有兩顆棋子就要判斷當下移動的棋子是前面還後面

 

最後兩個字

將車砲卒分一組判斷

士象馬分一組判斷

將車砲卒判斷很簡單

就判斷是否移動路線

是的話就是平移

不是的話就是進退

士象馬則是判斷移動是進還退

但最後一個字要注意要寫路線不是進退步數

 
ZeroJudge Forum