news 2026/8/16 19:14:47

第七届传智杯 初赛 小红的四子棋 题解 简单bfs遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第七届传智杯 初赛 小红的四子棋 题解 简单bfs遍历

描述

小红和小紫正在下一个名字叫"四子棋"的游戏。游戏的规则如下:
棋盘是一个nn行mm列的矩阵,两人轮流下子。如果有一方出现横、竖或者斜对角线方向有4个或4个以上的相同颜色的连珠,则获得游戏胜利。
小红拿到了棋盘的终局,她想知道是谁获得了胜利。

输入描述:

第一行输入两个正整数 nn 和 mm,用空格隔开。
接下来的nn行,每行输入一个长度为mm的字符串,字符串仅由'r'、'p'和'.'三种字符组成。'r'代表小红的棋子,'p'代表小紫的棋子,'.'代表未落子。
保证'r'和'p'的数量之差的绝对值不超过1。
保证连珠不超过7个棋子。
保证不会两种颜色的棋子都连珠。
4≤n,m≤1004≤n,m≤100

输出描述:

如果小红获胜,则输出"kou"

如果小紫获胜,则输出"yukari"

如果暂时无人获胜,则输出"to be continued"

示例1

输入:

4 5 rpprr prrpp p.r.. p..r.

输出:

kou

说明:

小红连成了一个斜对角线方向的四连珠。

思路:

因为数据范围小,我们可以直接暴力遍历每一个点与四个方向的其他3个点是否可以连成4个相同的子(即以这一个点坐标为基准,8个方向分横,竖,右斜,左斜暴力遍历一次),判断输出答案即可。

我的代码:

#include <iostream> #include<queue> #include<algorithm> #include<map> #include<vector> #include<set> #include<stack> #include<string> #include<math.h> #include <iomanip> #include<unordered_map> #include <unordered_set> #include<array> #define gets(S) fgets(S,sizeof(S),stdin) #define ll long long const ll N = 2e6 + 5; const ll Max = 0x3f3f3f3f; using namespace std; ll n, m; char saki[1145][1145]; struct mjk{ ll x, y; }; queue<mjk>mzm; bool bfs(ll x, ll y) { if (saki[x][y] == '.')return 0; ll cnt = 0; for (int i = x - 3; i <= x + 3; i++) { if (i < 1 || i>n)continue; if (saki[i][y] == saki[x][y])cnt++; else cnt = 0; if (cnt == 4)return 1; } cnt = 0; for (int i = y - 3; i <= y + 3; i++) { if (i<1 || i>m)continue; if (saki[x][i] == saki[x][y])cnt++; else cnt = 0; if (cnt == 4)return 1; } cnt = 0; for (int i = x - 3, j = y - 3; i <= x + 3, j <= y + 3; i++, j++) { if (i < 1 || i>n || j<1 || j>m)continue; if (saki[i][j] == saki[x][y])cnt++; else cnt = 0; if (cnt == 4)return 1; } cnt = 0; for (int i = x + 3, j = y - 3; i <= x - 3, j <= y + 3; i--, j++) { if (i < 1 || i>n || j<1 || j>m)continue; if (saki[i][j] == saki[x][y])cnt++; else cnt = 0; if (cnt == 4)return 1; } return 0; } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> saki[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (bfs(i, j)) { cout << (saki[i][j] == 'r' ? "kou" : "yukari"); return 0; } } } cout << "to be continued"; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 17:11:14

创建目标模块 Cordova 与 OpenHarmony 混合开发实战

&#x1f4cc; 概述 创建目标模块允许用户创建和编辑喝茶目标。该模块集成了 Cordova 框架与 OpenHarmony 原生能力&#xff0c;提供了完整的目标创建和编辑功能。用户可以设置目标名称、目标值、截止日期等信息。模块支持目标模板&#xff0c;帮助用户快速创建常见目标。 &…

作者头像 李华
网站建设 2026/8/12 16:28:40

解决MQ消息丢失问题的5种方案

前言今天我们来聊聊一个让很多开发者头疼的话题——MQ消息丢失问题。有些小伙伴在工作中&#xff0c;一提到消息队列就觉得很简单&#xff0c;但真正遇到线上消息丢失时&#xff0c;排查起来却让人抓狂。其实&#xff0c;我在实际工作中&#xff0c;也遇到过MQ消息丢失的情况。…

作者头像 李华
网站建设 2026/8/16 4:02:41

芜湖,千兆网络下载速率只有10MB秒,过的什么苦日子

第一坑&#xff1a;百度网盘的“灵魂限速”果然&#xff0c;下载链接指向了那个让人又爱又恨的百度网盘。非会员的下载速度&#xff1f;稳定在100KB/秒左右&#xff0c;好家伙&#xff0c;算下来得下一整天……我是那种坐以待毙的人吗&#xff1f;当然不&#xff01;我默默打开…

作者头像 李华
网站建设 2026/8/16 18:23:49

AI一周大事盘点(2025年12月14日~2025年12月20日)

【摘要】2025年12月第三周&#xff0c;全球AI领域呈现出三大核心趋势&#xff1a;首先&#xff0c;模型技术层面&#xff0c;以谷歌Gemini 3 Flash为代表的高性价比轻量级模型实现关键突破&#xff0c;为智能体&#xff08;Agent&#xff09;大规模应用奠定基础&#xff0c;同时…

作者头像 李华
网站建设 2026/8/15 20:47:33

K3s + Sysbox:让容器拥有“虚拟机的灵魂”

Containerd 与 Runc 的关系首先&#xff0c;让我们简要了解一下 containerd 是如何与 runc 协作的。containerd 是一个常驻的守护进程&#xff0c;主要负责以下任务&#xff1a;镜像管理&#xff1a;从镜像仓库拉取并存储镜像。容器管理&#xff1a;管理容器生命周期&#xff0…

作者头像 李华
网站建设 2026/8/14 10:54:58

8 个降AI率工具推荐,继续教育学生必备

8 个降AI率工具推荐&#xff0c;继续教育学生必备 AI降重工具&#xff0c;让论文更自然更安心 随着人工智能技术的不断进步&#xff0c;越来越多的学生和研究人员在撰写论文时会借助AI工具进行辅助。然而&#xff0c;AI生成的内容往往存在明显的痕迹&#xff0c;容易被查重系统…

作者头像 李华