很纯粹的模拟。
需要注意的是输出格式,比如最后一个(i,j)后没有空格,最后一场棋后也无回车,以及输出棋子数量时数字占两位。
简单思路。
LIST:遍历棋盘,每个点单独判断八个方向是否有同色棋子,有即返回。
MOVE:放下棋子,依次修改。相比判断同色棋子的过程,它只多了修改操作,因此我采用的是同一个函数,以bool关键字区别。
QUIT:打印。
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 8;
const int BLACK = 1;
const int WHITE = 0;
const int BLANK = -1;
const int ROW[] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int COL[] = {0, 1, 1, 1, 0, -1, -1, -1};
int board[MAXN+2][MAXN+2];
int num[2];
int readchar()
{
int ch;
while (ch = getchar())
{
if (ch == '-' || ch == 'B' || ch == 'W') break;
}
return ch;
}
int _map(int ch)
{
switch(ch)
{
case 'B':
return BLACK; // 1
case 'W':
return WHITE; // 0
case '-':
return BLANK; // -1
case BLACK:
retur
ACM篇:UVA220黑白棋总结
最新推荐文章于 2020-08-04 00:24:24 发布
本文主要介绍了如何解决UVA220黑白棋问题,通过模拟游戏过程来实现。关键在于理解棋盘状态的判断和更新,包括棋子放置的合法性、翻转规则以及棋盘的输出格式。代码中包含了读取输入、处理棋盘状态和执行游戏操作的函数。
摘要由CSDN通过智能技术生成