【ccf-csp题解】第7次csp认证-第二题-俄罗斯方块-简单碰撞检测算法

news2024/11/17 6:33:36

题目描述

思路讲解

本题的主要思路是实现一个draw函数,这个函数可以绘制每一个状态的画布。然后从第一个状态往后遍历,当绘制到某一个状态发生碰撞时,答案就是上一个状态的画布。

此处的状态x实际就是在原来的15*10画布上的第x行开始画我们的4*4的自定义像素块

如何检测碰撞与否呢?

对于每一次使用draw并开始将我们的4*4像素放到15*10画布上时,如果4*4像素上的一个位置为0直接跳过,如果为1的话,就让15*10画布相应位置上加1,然后检测这个位置现在是否为2,如果为2就直接返回true表明这个状态已经发生碰撞,那么答案就是上个状态的draw后的结果!

最后一个问题:下面这种情况怎么办?

蓝色像素掉下来的时候会直接掉出边界,为了简单起见,我们此处使用的方法是在第16行加一层“地板”,这样就一定保证碰撞和出界都可以在drow中返回true

ac代码

#include<iostream>
#include<cstring>
using namespace std;
const int N=20;
int s[N][N],g[N][N];
int p[4][4];
bool draw(int x,int y)//画在s[][]上面
{
	memcpy(s,g,sizeof s);
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)
		{
			if(p[i][j])
			{
				int a=i+x,b=j+y;
				s[a][b]++;
				if(s[a][b]==2)return true;
			}
		}
	}
	return false;
} 
int main()
{
	for(int i=0;i<15;i++)
	{
		for(int j=0;j<10;j++)cin>>g[i][j];
	}
	for(int i=0;i<10;i++)g[15][i]=1;
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)cin>>p[i][j];
	}
	int c;
	cin>>c;
	c--;
	for(int i=0;;i++)
	{
		if(draw(i,c))
		{
			draw(i-1,c);
			break;
		}
	}
	for(int i=0;i<15;i++)
	{
		for(int j=0;j<10;j++)
		{
			cout<<s[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度优先搜索详解

目录 前言 一、工作原理 二、模板 函数模板&#xff1a; 准备工作 三、主要应用 &#xff08;一&#xff09;寻找全部路径 题目描述 输入格式 输出格式 样例输入 样例输出 参考代码 思路 原题链接&#xff1a;1213: 走迷宫 &#xff08;二&#xff09;统计连通块…

哪款洗地机更好用?2023年最好用的洗地机

随着科技的发展和生活质量的提高&#xff0c;人们对洗地机的关注也越来越频繁&#xff0c;但是市场上洗地机品牌众多&#xff0c;消费者在选择时常常会感到困惑。那么&#xff0c;究竟哪个品牌的洗地机更好用呢? 我们在购买洗地机的时候&#xff0c;都要关注洗地机的哪些方面…

如何下载IEEE Journal/Conference/Magazine的LaTeX/Word模板

当你准备撰写一篇学术论文或会议论文时&#xff0c;使用IEEE&#xff08;电气和电子工程师协会&#xff09;的LaTeX或Word模板是一种非常有效的方式&#xff0c;它可以帮助你确保你的文稿符合IEEE出版的要求。无论你是一名研究生生或一名资深学者&#xff0c;本教程将向你介绍如…

深度学习问答题(更新中)

1. 各个激活函数的优缺点&#xff1f; 2. 为什么ReLU常用于神经网络的激活函数&#xff1f; 在前向传播和反向传播过程中&#xff0c;ReLU相比于Sigmoid等激活函数计算量小&#xff1b;避免梯度消失问题。对于深层网络&#xff0c;Sigmoid函数反向传播时&#xff0c;很容易就…

读懂MCU产品选型表

读懂MCU产品选型表 产品状态 MP&#xff1a;Mass Production&#xff08;大规模生产&#xff09; - 这表示产品已经进入了大规模生产阶段&#xff0c;可以大量生产并提供给市场。UD&#xff1a;Under Development&#xff08;开发中&#xff09; - 这表示产品目前正在开发阶段…

嵌入式音频软件开发之协议时序图分析方法

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;加我微信hezkz17, 本群提供音频技术答疑服务 1 TCP/IP 三次握手协议-时序图 序列号是随机数&#xff0c;但是对方回应则是序列号1 &#xff0c;同步1使能&#xff0c;ACK1使能该功能 2 iAP2 授权交互时序…

如何优化敏捷需求管理流程,敏捷需求如何管理。

优化敏捷需求管理流程的方法可以参照如下&#xff1a; 明确需求 。在项目开始时&#xff0c;要确保清楚地理解客户需求&#xff0c;明确项目的目标和范围&#xff0c;以便能够在敏捷迭代中快速响应需求变更。 使用用户故事 。采用用户故事的方式&#xff0c;让客户和开发团队…

云开发中关于Container与虚拟机之间的比较

虚拟机的优势&#xff1a; 1、较小的硬盘开销&#xff1a;一个物理机上可以运行多个虚拟机。 2、容易移植到其他机器上。 3、整合闲置工作负载。 提高设备利用率。 4、通过释放不用的资源来减少能源消耗。 5、多种操作系统让其具有灵活性和可扩展性。 虚拟机的缺点&#…

数据库中了mkp勒索病毒怎么恢复数据,勒索病毒解密,数据恢复

mkp勒索病毒是一种危害性极大&#xff0c;且比较常见的电脑病毒类型。根据数据统计&#xff0c;这种类型的勒索病毒每月攻击的用户数量高达数百起。其中绝大多数用户需要恢复的数据类型为数据库。包括但不限于SQL server、MySQL和oracle等数据库。所以云天数据恢复中心将针对数…

行情分析——加密货币市场大盘走势(9.10)

大饼在昨日下跌回踩了EMA21均线&#xff0c;但是遇到强阻力回调&#xff0c;形成了金针探底的形态。MACD日线级别来看&#xff0c;延续了绿色空心柱&#xff0c;并且还要继续延续的趋势。但是目前依然没有跌破上涨趋势区域。现在建议保持观望状态&#xff0c;现在多空盈亏比不够…

python 在window对exe、注册表、bat、系统服务操作等实例讲解

目录 前言&#xff1a; 1、python准备工作 具体操作实例 实例1&#xff1a;调用exe文件 实例2&#xff1a;调用bat批处理文件 实例3&#xff1a;调用mis安装文件 实例4&#xff1a; 操作注册表 实例5&#xff1a; window系统服务的操作 完整代码 前言&#xf…

原生JS-鼠标拖动

原生JS-鼠标拖动 通过鼠标的点击事件通过h5的属性 通过鼠标的点击事件 步骤&#xff1a; 1. 鼠标按下div。 2. 鼠标移动&#xff0c;div跟着移动 原生js&#xff0c;实现拖拽效果。1. 给被拖拽的div加上 onmousedown 鼠标【按下事件】。鼠标按下的时候&#xff0c;开始监听鼠标…

安达发|制造业的新趋势:APS排程软件的广泛应用

近年来&#xff0c;随着科技的快速发展&#xff0c;制造业也在逐步实现智能化、自动化。其中&#xff0c;APS排程软件的应用越来越广泛&#xff0c;成为制造业提高生产效率、降低运营成本的重要工具。本文将深入探讨这一现象背后的原因。 制造业是全球经济的重要支柱&#xff0…

pygame简单实现游戏开始菜单

最终效果&#xff1a; 完整视频&#xff1a; pygame简单实现菜单 Code&#xff1a; settings.py RESWIDTH,HEIGHT800,600 FPS60main.py import pygame as pg from settings import * import sysclass Game:def __init__(self):pg.init()self.screenpg.display.set_mode(RES)…

浏览器中XPath的使用

概念 XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言&#xff0c;可用来在 XML 文档中对元素和属性进行遍历。 XPath定位在爬虫和自动化测试中都比较常用&#xff0c;通过使用路径表达式来选取 XML 文档中的节点或者节点集&#xff0c;熟练掌握XPath可以极大提…

生成多元正态数据

目录 一、mvrnorm()函数使用介绍 例1&#xff1a;生成服从多元正态分布的数据 例2:生成一组服从多元正态分布的观测 一、mvrnorm()函数使用介绍 获取来自给定均值向量和协方差阵的多元正态分布的数据。 MASS包中的mvrnorm()函数可以让这个问题变得很容易&#xff0c;其调用…

Visual Leak Detector内存泄漏检测机制源码剖析

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

10分钟深入探讨带你彻底理解浅拷贝与深拷贝

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 引言 &#x1f4d8; 1. 深拷贝…

阿里春招JAVA后端面试总结

阿里巴巴春招的后端面经,问了比较多的计算机基础和数据库的内容。 操作系统 一个操作系统,我们在衡量它的内存占用的时候,它一般会有哪些内存的部分? 答:堆和栈 补充: 这个其实是问你对free命令的理解。 主机的内存做一些清理的动作。你知道这里面会涉及到对哪些…

三、监控搭建-Prometheus-grafana部署

三、监控搭建-Prometheus-grafana部署 1、背景2、目标3、传承4、操作 1、背景 在前两篇中介绍了部署prometheus平台和主机采集端部署&#xff0c;都是采用的单查询信息检索&#xff0c;不是太直观 2、目标 实现可视化查看 3、传承 本篇操作依赖[《监控搭建-Prometheus》 和…