当前位置: 首页 > news >正文

C++程序设计:消除类游戏

【问题描述】

消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。

现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。

请注意:一个棋子可能在某一行和某一列同时被消除。

【输入形式】

输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。

接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。

【输出形式】

输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。

【样例输入】

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

【样例输出】

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

【样例说明】

棋盘中第4列的1和第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 3 0 2
3 0 0 0 0
2 3 2 0 3
2 2 0 0 0

【样例说明】

棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。

【评分标准】

评测用例规模与约定
所有的评测用例满足:1 ≤ n, m ≤ 30。

#include <iostream>
using namespace std;
struct answer {
	int x;
	int y;
	bool dir;
}answer[100];
int main() {
	int m,n,count=0;
	cin>>m>>n;
	int a[m][n];
	for(int i=0; i<m; i++)
		for(int j=0; j<n; j++)
			cin>>a[i][j];
	for(int i=0; i<m; i++) {
		for(int j=0; j<n-2; j++)
			if(a[i][j]==a[i][j+1]&&a[i][j+1]==a[i][j+2]) {
				answer[count].dir=true;
				answer[count].x=i;
				answer[count].y=j;
				count++;
			}
	}
	for(int j=0; j<n; j++) {
		for(int i=0; i<m-2; i++)
			if(a[i][j]==a[i+1][j]&&a[i+1][j]==a[i+2][j]) {
				answer[count].dir=false;
				answer[count].x=i;
				answer[count].y=j;
				count++;
	}
}
	for(int i=0; i<count; i++)
		for(int step=0; step<3; step++) {
			if(answer[i].dir) 
				a[answer[i].x][answer[i].y+step]=0;
			else a[answer[i].x+step][answer[i].y]=0;
		}
	for(int i=0; i<m; i++) {
		for(int j=0; j<n; j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

相关文章:

  • MaxDSNSize 未设置
  • C++程序设计:图像旋转
  • C++程序设计:分解质因数
  • 设置NTFS权限以避免通过webshell遍历主机目录(原创)
  • C++程序设计:打印杨辉三角形
  • 如何安装一个安全的动网(转)
  • C++程序设计:字符图形输出(数字三角形)
  • 远程分析IIS设置(转)
  • C++程序设计:字符图形输出(空白三角形)
  • 规律化生活一周
  • C++程序设计:今夕何夕,见此良人(经典题目)
  • DVBBS7.0变量列表
  • C++程序设计:求n个数的最大值、最小值及其出现的位置
  • C++程序设计:逆序数
  • 思量了许久还是决定做游戏
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • $translatePartialLoader加载失败及解决方式
  • Java多态
  • js作用域和this的理解
  • laravel 用artisan创建自己的模板
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 包装类对象
  • 从零开始在ubuntu上搭建node开发环境
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 欢迎参加第二届中国游戏开发者大会
  • 实现菜单下拉伸展折叠效果demo
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • MPAndroidChart 教程:Y轴 YAxis
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​secrets --- 生成管理密码的安全随机数​
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)Android开发优化---------UI优化
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (九)信息融合方式简介
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Linux+Windows下安装ffmpeg
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)winform之ListView
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .htaccess配置重写url引擎
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 表达式计算:Expression Evaluator
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net中ListT 泛型转成DataTable、DataSet
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解