ACM篇:UVA220黑白棋总结

本文主要介绍了如何解决UVA220黑白棋问题,通过模拟游戏过程来实现。关键在于理解棋盘状态的判断和更新,包括棋子放置的合法性、翻转规则以及棋盘的输出格式。代码中包含了读取输入、处理棋盘状态和执行游戏操作的函数。
摘要由CSDN通过智能技术生成
很纯粹的模拟。
需要注意的是输出格式,比如最后一个(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值