五子棋、Emacs计算器

这篇博客探讨了五子棋的赢棋规则,并提供了一种检测五子连珠的算法。此外,还介绍了Emacs计算器的工作原理,特别是如何处理后缀表达式进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目说明

NowCoder最近爱上了五子棋,现在给你一个棋局,请你帮忙判断其中有没有五子连珠(超过五颗也算)。

输入描述:

输入有多组数据,每组数据为一张20x20的棋盘。
其中黑子用“*”表示,白子用“+”表示,空白位置用“.”表示。

输出描述:

如果棋盘上存在五子连珠(无论哪种颜色的棋子),输入“Yes”,否则输出“No”。

示例:
输入:
....................
....................
....................
....................
......*.............
.......*............
........*...........
....++++.*..........
..........*.........
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
.......*............
......+*+++.........
.......*............
.......*............
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................

输出:
Yes
No

五子棋赢的规则:如果当前位置有连在一起的五颗棋子为同一种,则为赢。每取一个位置,检测该位置上、下、左、右以及对角线为是否为同一种棋子,是输出YES,不是则获取下一个位置继续检测,如果棋盘中没有连在一起的五颗棋子则输出NO。

dir代表当前位置的8个方向,其中上下、左右、左上右下、右上左下必须放在一起检测。获取一个棋盘,按照行列检测棋盘中的每个位置,当拿到一个位置后,按照以下步骤进行操作:

1.以该位置为中心,依次检测该位置的上下、左右、左上右下、右上左下
2.从该位置开始向上检测,找出连在一起的同种棋子个数,再向下检测同种棋子的个数并累计,注意在检测时,中心位置统计了两次,上下统计完时,需要给结果减去1
3.按照2统计完上下、左右、左上右下、右上左下各个方向,找出最大的同种棋子个数
4.检测3中统计出的最大同种棋子个数,如果大于等于5,输出YSE,否则取下一个位置继续1
5.如果所有的位置检测完,没有超过5个的相同棋子,则输出NO

代码:
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int blackwhite(string table[], char ch, int x, int y)
{
   
    int maxc = 0;
    int dir[4][2][2] = {
    {
   {
    -1,0 },{
    1,0 }},{
   {
    0,-1 },{
    0,1 }},{
   {
    -1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值