Competition3_t2

2023-05-16

题目描述

Q老师是个很老实的老师,最近在积极准备考研。Q老师平时只喜欢用Linux系统,所以Q老师的电脑上没什么娱乐的游戏,所以Q老师平时除了玩Linux上的赛车游戏SuperTuxKart之外,就是喜欢消消乐了。
游戏在一个包含有n 行m 列的棋盘上进行,棋盘的每个格子都有一种颜色的棋子。当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。一个棋子可能在某一行和某一列同时被消除。
由于这个游戏是闯关制,而且有时间限制,当Q老师打开下一关时,Q老师的好哥们叫Q老师去爬泰山去了,Q老师不想输在这一关,所以它来求助你了!!

输入格式

输入第一行包含两个整数n,m,表示行数和列数。
接下来n行m列,每行中数字用空格隔开,每个数字代表这个位置的棋子的颜色。数字都大于0。

输出格式

输出n行m列,每行中数字用空格隔开,输出消除之后的棋盘。(如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。)

输入样例1

4 5
2 2 3 1 2
3 4 5 1 4
2 3 2 1 3
2 2 2 4 4

输出样例1

2 2 3 0 2
3 4 5 0 4
2 3 2 0 3
0 0 0 4 4

输入样例2

4 5
2 2 3 1 2
3 1 1 1 1
2 3 2 1 3
2 2 3 3 3

输出样例2

2 2 3 0 2
3 0 0 0 0
2 3 2 0 3
2 2 0 0 0

数据规模与约定

在这里插入图片描述

解题思路

设置两个二维数组表示消消乐棋盘,一个是输入的棋盘,一个是输出的棋盘。刚开始的时候输出的棋盘和输入的棋盘相同。
遍历输入棋盘的每个点,判断当前遍历到的点:

  • 右侧的两个点是否和自己相同
  • 下方的两个点是否和自己相同

如果满足条件,就将输出棋盘中的对应点变为0。
特殊的,在棋盘边缘的点理论上可能会没有右边的两个点或者下方的两个点,由于消消乐必须至少三个相同才能消去,故只需要初始棋盘的数组空间开的稍微大一点,然后在输入数据之前把数组空间全部初始化为0即可。
(因为棋盘的数字只可能是1~9)

#include <iostream>
#include <cstring>

using namespace std;

int input[50][50];
int ans[50][50];

int main()
{
	int n, m;
	cin >> n >> m;

	memset(input, 0, sizeof input);
	memset(ans, 0, sizeof ans);

	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
		{
			cin >> input[i][j];
			ans[i][j] = input[i][j];
		}

	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
		{
			if (input[i][j] == input[i][j + 1] && input[i][j + 1] == input[i][j + 2])
			{
				ans[i][j] = 0;
				ans[i][j + 1] = 0;
				ans[i][j + 2] = 0;
			}
			if (input[i][j] == input[i + 1][j] && input[i + 1][j] == input[i + 2][j])
			{
				ans[i][j] = 0;
				ans[i + 1][j] = 0;
				ans[i + 2][j] = 0;
			}
		}

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (j == m - 1) cout << ans[i][j];
			else cout << ans[i][j] << ' ';
		}
		if (i != n - 1) cout << endl;
	}

	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Competition3_t2 的相关文章

  • 【ing】在Linux虚拟机上安装Sundials库(图文)

    1 Sundials库下载 Sundials下载地址 2 具体步骤 2 1 下载sundials 2 2 0 本次尝试选择sundials 2 2 0进行安装 Sundials文件内容如下 xff1a 2 2 创建安装目录 安装目录名称为
  • 基于docker部署Prometheus

    文章目录 基于Docker搭建Prometheusgitee 介绍Prometheus一 安装运行Prometheus docker版 部署Prometheus1 安装docker联网状态下阿里云离线安装包下载2 下载镜像包3 启动node
  • 程序设计思维与实践 Week11 作业 E 选做题11-1 东东与 ATM

    题目描述 xff1a 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机
  • kubectl edit

    文章目录 kubectl edit官方文档语法示例 kubectl edit 官方文档 使用默认编辑器 编辑服务器上定义的资源 使用命令行工具获取的任何资源都可以使用edit命令编辑 edit命令会打开使用KUBE EDITOR xff0c
  • kubectl exec

    文章目录 kubectl exec通过bash获得pod中某个容器的TTY xff0c 相当于登录容器 命令行 创建一个test文件 xff1a kubectl exec exec命令同样类似于docker的exec命令 xff0c 为在一
  • kubectl describe

    文章目录 describe语法选项 示例描述一个node详细信息描述一个pod描述calico yaml中的资源类型和名称指定的pod描述所有的pod描述所有包含label k8s app 61 calico kube controller
  • k8s自动化安装脚本(kubeadm-1.21.1)

    文章目录 介绍软件架构安装教程更新内容2023 02 102022 10 202022 08 06准备部署包 操作步骤环境准备结构备注 解压部署包修改host文件初始化环境验证ansible配置 安装k8s集群登录master的节点添加no
  • Shell——docker启动yapi

    文章目录 脚本简介脚本注解执行方式脚本内容 脚本简介 基于运维统一脚本中 17 平台管理下的Yapi管理平台部署系统版本Centos7docker环境 脚本注解 该脚本快速部署yapi平台 xff0c 已通过docker commit把对应
  • Shell——查看基础信息脚本

    文章目录 脚本简介脚本注解安装方式执行方式执行结果 脚本内容新版本旧版本 脚本简介 基于运维统一脚本中 xff0c 19 脚本安装下的检查服务器脚本安装使用yum安装 yum仓库 xff0c 系统版本Centos7 脚本注解 该脚本为了快速
  • k8s自动化安装脚本(kubeadm-1.23.7)

    文章目录 介绍软件架构版本介绍更新内容2023 02 192023 02 152023 02 142023 02 102022 10 202022 08 06准备部署包 操作步骤环境准备结构备注 解压部署包修改host文件脚本使用方式初始化
  • 在VS code中打开网页预览

    在VS code中打开网页预览 在平时进行前端设计的时候 xff0c 你是否会因为无法实时观察到网页的变化而苦恼 xff0c 每一次都要重新打开html文件的过程过于繁琐 xff0c 现在就有一种新的方式能够让你在coding的时候实时观察
  • 最小生成树+思维 扩散(洛谷 P1661)

    扩散 题目描述 一个点每过一个单位时间就会向四个方向扩散一个距离 xff0c 如图 图略 两个点a b连通 xff0c 记作e a b 当且仅当a b的扩散区域有公共部分 连通块的定义是块内的任意两个点u v都必定存在路径e u a0 e
  • C语言解决百钱买百鸡问题

    百钱买百鸡问题 穷举法举例 求解 百钱买百鸡 问题 xff1a 公鸡每只5钱 xff0c 母鸡每只3钱 xff0c 小鸡3只1钱 求解思路 xff1a 设公鸡数为x xff0c 母鸡数为y xff0c 小鸡数为z xff0c 则可以得到下面
  • 程序设计思维与实践 Week12 作业 C 必做题 - 3

    题目描述 xff1a 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a i 43 43 a j 个人 这让宿
  • VMware虚拟机解决空间不足,增加磁盘空间(磁盘扩容)

    在使用VMware进行linux学习过程中有时会出现磁盘空间不足的情况 xff0c 但是之前一直是只要磁盘空间不足就直接重装系统 xff0c 持续一段时间后感觉计算机科班出生的人这样做有点侮辱 xff0c 所以就静心学习了扩充磁盘的过程 x
  • Visual Studio Code + PyQt5环境搭建

    文章目录 x1f34e 前言 x1f34e 1 PyQt5工具包安装 x1f34e 2 Visual Studio Code配置 x1f34e 3 Visual Studio Code里使用PyQt5 x1f34e 4 总结 x1f34e
  • 字符串

    题目描述 一天蒜头君得到一个字符串 xff0c 他把字符串的第 i 个字符串变成 i 个 例如字符串为 span style color c7254e 34 abc 34 span xff0c 蒜头君把字符串变成了 span style c
  • 解决ubuntu 22.04上teamViewer/toDesk闪退等问题

    解决办法 xff1a 同时安装teamviewer和向日葵等远程控制软件 xff0c 同时开 xff0c g了一个用另一个重启 向日葵官网下载 xff1a https sunlogin oray com download linux tea
  • Codeforces Round #560 (Div. 3) C. Good String

    Let s call yet again a string good if its length is even and every character in odd position of this string is different

随机推荐