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

题目描述

思路讲解

本题的主要思路是实现一个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.mzph.cn/news/99966.shtml

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

相关文章

你必须知道的数据查询途径!!

在当今信息爆炸的时代&#xff0c;我们每天都会面临海量的数据和信息。如何在这些繁杂的信息中快速、准确地找到自己需要的内容&#xff0c;也是当代一个非常重要的技能。下面&#xff0c;我将介绍几种你必须知道的企业数据信息查找途径。 ​ 1. 搜索引擎 搜索引擎是我们日常中…

基于SSM的医用物理学实验考核系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

算法题:柠檬水找零(典型的贪心算法问题)

这道题就是纯贪心算法题&#xff0c;遍历每个顾客&#xff0c;先把钱收了&#xff0c;如果是10块钱就判断手里头有没有5元用于找零&#xff1b;如果是20块钱&#xff0c;先判断是不是有10元5元&#xff0c;如果没有就再判断是否有3个5元。没有的话就直接返回 False。(完整题目附…

vue2项目中使用element ui组件库的table,制作表格,改表格的背景颜色为透明的

el-table背景颜色变成透明_el-table背景透明_讲礼貌的博客-CSDN博客 之前是白色的&#xff0c;现在变透明了&#xff0c;背景颜色是蓝色

加密市场波动:地缘政治与美股走弱引发不确定性!

伴随着国庆假期的结束&#xff0c;多日波动率维持低位的加密市场也似乎开始苏醒。近期多次突破28000美元未果的比特币&#xff0c;于9日15:00开始从27800美元附近下跌&#xff0c;最低跌至27260美元&#xff0c;同期以太坊也至1550美元左右&#xff0c;创近半个月来新低。 Coin…

vue接入高德地图获取经纬度

&#x1f90d;step1:高德地图开放平台&#xff0c;根据指引注册成为高德开放平台开发者&#xff0c;并申请 web 平台&#xff08;JS API&#xff09;的 key 和安全密钥; &#x1f90d;step2:在html引入安全密钥&#xff08;获取经纬度用&#xff0c;不然会报错&#xff09; <…

基于SpringBoot的大型商场应急预案管理系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 预案信息管理 预案类型统计 事件类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍…

手撕各种排序

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握每种排序的方法&#xff0c;理解每种排序利弊…

springboot-配置文件优先级

官方文档 https://docs.spring.io/spring-boot/docs/2.7.16/reference/htmlsingle/#features.external-config Spring Boot允许外部化配置&#xff0c;这样就可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源&#xff0c;包括Java属性文件、YAML文件、环境…

ROS 工作空间及功能包

ROS工作空间&#xff08;workspace&#xff09;是一个存放工程开发相关文件的文件夹。 1. 什么是ROS的工作空间 使用ROS实现机器人开发的主要手段是写代码&#xff0c;这些代码文件存放的空间就是工作空间。 工作空间&#xff08;workspace&#xff09;是一个用于存放工程开发…

Spring Data Redis使用方式

1.导入Spring Data Redis的maven坐标 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2. 配置Redis数据源 2.1application.yml文件…

【工具】SSH端口转发管理器,专门管理SSH Port Forwarding

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 开源代码看这里&#xff1a;http://xfxuezhang.cn/index.php/archives/1151/ 背景介绍 有时候需要用到ssh的端口转发功能。目前来说&#xff0c;要么是cmd里手敲指令&#xff0c;但每次敲也太麻烦了&#xff1b;或…

JVM命令行监控工具

JVM命令行监控工具 概述 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&#xff0c;在用户体验至上的今天&#xff0c;解决好应用的性能问题能带来非常大的收益。 Java作为最流行的编程语言之一&#xff0c;其应用性能诊断一直受到业界广泛关注&#xff0c;可能…

游戏缺少dll文件用什么修复?教你多种dll文件修复方法搞定!

在玩游戏的时候&#xff0c;有时候会遇到一些dll文件缺失的问题&#xff0c;导致游戏无法正常运行。这对于广大游戏爱好者来说无疑是一种巨大的打击。但是不要担心&#xff0c;我们总会有方法来解决这个问题。本文将详细介绍几种解决方法&#xff0c;帮助你轻松修复游戏缺少dll…

技术干货:解密最受欢迎的开源 Serverless 框架弹性技术实现

作者&#xff1a;元毅 Knative 是一款基于 Kubernetes 的开源 Serverless 应用编排框架&#xff0c;其目标是制定云原生、跨平台的 Serverless 应用编排标准。Knative 主要功能包括基于请求的自动弹性、缩容到 0、多版本管理、基于流量的灰度发布以及事件驱动等。 弹性是 Ser…

苹果遭遇安全危机,应用商店曝出不良APP,或影响iPhone的销售

据澎湃新闻报道指苹果的App Store被曝出不良APP位居下载榜前列&#xff0c;这对于向来强调APP严格审核的苹果来说是巨大的打击&#xff0c;更影响向来被认为信息安全遥遥领先的名声&#xff0c;对当下正热销的iPhone15或造成打击。 据了解被曝的软件以“学习XX字母”为命名&…

C++ 获取文件创建时间、修改时间、大小等属性

简介 获取文件创建时间、修改时间、大小等属性 代码 #include <iostream> #include <string.h> #include <time.h>void main() {std::string filename "E:\\LiHai123.txt";struct _stat stat_buffer;int result _stat(filename.c_str(), &s…

直线导轨精度等级在设备中有什么影响?

直线导轨的精度选择是直线导轨应用中的重要环节&#xff0c;需要根据具体的应用场景和设备要求来选择合适的精度等级&#xff08;常见分3个等级&#xff1a;N/H/P&#xff09;。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念&#xff1a;直线导轨的精度等级是…

AIGC | LLM 提示工程 -- 如何向ChatGPT提问

当前生成式人工智能已经成为革命性的驱动源&#xff0c;正在迅速地重塑世界&#xff0c;将会改变我们生活方式和思考模式。LLM像一个学会了全部人类知识的通才&#xff0c;但这不意味每个人可以轻松驾驭这个通才。我们只有通过学习面向LLM的提示工程&#xff0c;才可以更好的让…

LLM 时代,如何优雅地训练大模型?

原作者王嘉宁 基于https://wjn1996.blog.csdn.net/article/details/130764843 整理 大家好&#xff0c;ChatGPT于2022年12月初发布&#xff0c;震惊轰动了全世界&#xff0c;发布后的这段时间里&#xff0c;一系列国内外的大模型训练开源项目接踵而至&#xff0c;例如Alpaca、B…