编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

象棋-C语言实现象棋残局将死判断(中国象棋c语言)

wxchong 2024-10-18 14:28:09 开源技术 16 ℃ 0 评论

题目来自UVa1589,链接 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4464

考虑一个象棋残局,其中红方有n(2=<n<=7)个棋子,黑方只有一个将。红方除了有一个帅(G)之外,还有3种可能的棋子:车(R),马(H),炮(C),并且需要考虑“憋马腿”与将帅不能照面(将、帅如果在同一条直线上,中间又不隔着任何棋子得到情况下,走子的一方获胜)的规则。输入所有棋子的位置,保证局面合法并且红方已将军。你的任务是判断红方是否已经把黑方将死。具体规则可参看原题目。

需要考虑的几个点:

1、需要读取多个测试例;

2、将帅照面的情况,比如初始状态就将帅照面了,或走一步照面;

3、炮必须隔一个子;

4、“憋马腿”的情况;

剩下就是个人实现的细节差异了。

个人代码实现如下:

主函数循环读取数据,对每个测试例进行判断,并输出结果,调试过程中可以利用freopen将输入和输出记录在文件中。

黑方将的可走位置利用查表的方式寻找。

检查是否将死,飞将、车、炮和马。

检查飞将的情况。

检查马是否能将死黑将。

详细完整代码如下:

需要源代码的可以私信,私信发象棋源码判定

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表