这道象棋模拟题其实还是比较简单的,但是写起来要注意的地方非常多。测试数据据说不太刁钻,比如那种黑方能够直接获胜的棋局(表现为一开始将帅之间就没有任何棋子而相对)是没有的。不过为了内心的宁静,我在代码里还是加上了这些特判内容。

赛后练习时提交了三次才 AC, 原因是判断红方马的时候不小心判断到了黑方 boss 的原来位置上(而正确的判断方法应该是黑方 boss 走一步之后的那个位置),后来检查了几遍才看出来。

这里面还有一些小技巧,就是可以专门写一个函数,判断两个棋子之间有多少个其它棋子,这样炮、车、帅就好复用了。其实这里面车的 behavior 和帅的基本上是一样的。

现场赛的时候是队长 Wideas 敲的,赛后他对我的教诲是,对于这种模拟题,数据范围并不是特别大,考点在于编程细心方面的,写起来就不要考虑太多执行效率上的问题了。嗯,所以这种题,应该怎么写爽,就怎么写。

原创文章,转载请注明来源:http://euyuil.com/3190/acm-icpc-2011-fuzhou-xiangqi-solution/