热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CCF201642俄罗斯方块

试题编号201604-2试题名称:俄罗斯方块时间限制:1.0s内存限制:256.0Mb问题描述:问题描述俄罗斯方块是俄罗
试题编号201604-2
试题名称:俄罗斯方块
时间限制:1.0s
内存限制:256.0Mb
问题描述:

问题描述

  俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。
  游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个新的由4个小方块组成的板块从方格图的上方落下,玩家可以操作板块左右移动放到合适的位置,当板块中某一个方块的下边缘与方格图上的方块上边缘重合或者达到下边界时,板块不再移动,如果此时方格图的某一行全放满了方块,则该行被消除并得分。
  在这个问题中,你需要写一个程序来模拟板块下落,你不需要处理玩家的操作,也不需要处理消行和得分。
  具体的,给定一个初始的方格图,以及一个板块的形状和它下落的初始位置,你要给出最终的方格图。

输入格式

  输入的前15行包含初始的方格图,每行包含10个数字,相邻的数字用空格分隔。如果一个数字是0,表示对应的方格中没有方块,如果数字是1,则表示初始的时候有方块。输入保证前4行中的数字都是0。
  输入的第16至第19行包含新加入的板块的形状,每行包含4个数字,组成了板块图案,同样0表示没方块,1表示有方块。输入保证板块的图案中正好包含4个方块,且4个方块是连在一起的(准确的说,4个方块是四连通的,即给定的板块是俄罗斯方块的标准板块)。
  第20行包含一个1到7之间的整数,表示板块图案最左边开始的时候是在方格图的哪一列中。注意,这里的板块图案指的是16至19行所输入的板块图案,如果板块图案的最左边一列全是0,则它的左边和实际所表示的板块的左边是不一致的(见样例)

输出格式

  输出15行,每行10个数字,相邻的数字之间用一个空格分隔,表示板块下落后的方格图。注意,你不需要处理最终的消行。

样例输入

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
1 1 1 0 0 0 1 1 1 1
0 0 0 0 1 0 0 0 0 0
0 0 0 0
0 1 1 1
0 0 0 1
0 0 0 0
3

样例输出

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 0 0 0 0


思路:把整个方格图缩小到只有四列,即最后输入的开始的列数[left ,left+4),然后模拟小方块降落过程;整个过程最重要的就是小方块的最后一行,需要先从下向上遍历小方格得到它的有效行数row_num;因为保证方格图前四行全为零,所以从第五行开始模拟即可;这里的模拟就是将两个方格图对应元素相加,如果在i行出现2,那么小方格只能落在i-1行了,如果i==15说明一路畅通无阻,直接落到最后一行;

数据量比较小,不用担心超时的问题

代码(100分):

#include
using namespace std;int a[16][11], b[5][5];//a为方块图,b为小方块int main()
{for (int i &#61; 1; i <&#61; 15; i&#43;&#43;)//输入数据{for (int j &#61; 1; j <&#61; 10; j&#43;&#43;){cin >> a[i][j];}}for (int i &#61; 1; i <&#61; 4; i&#43;&#43;){for (int j &#61; 1; j <&#61; 4; j&#43;&#43;){cin >> b[i][j];}}int row_num &#61; 4;//初始小方块有效行数为4bool judge&#61;false;for (int i &#61; 4; i >&#61; 1; i--)//从下往上遍历小方块&#xff0c;锁定有效行数{for (int j &#61; 1; j <&#61; 4; j&#43;&#43;){if (b[i][j] !&#61; 0){row_num &#61; i;judge&#61;true;break;}}if(judge) break;}int left, k &#61; 0;//k表示模拟下降时碰到阻碍的那一行cin >> left;int right &#61; left &#43; 4;for (int i &#61; 5; i <&#61; 15; i&#43;&#43;) //小块最底部从第5行开始一直下降 最多降到第15行{int row_1 &#61; i, row_2 &#61; i - row_num, col_1 &#61; left, col_2 &#61; right;int row_3 &#61; row_num,col_3 &#61; 1;for (; row_1 > row_2; --row_1, --row_3)//将方格图行与小方块行对应起来{col_3 &#61; 1,col_1 &#61; left;for (; col_1 row_2; --row_1, --row_3)//确定行数直接相加{col_3 &#61; 1,col_1 &#61; left;for (; col_1 }

 


推荐阅读
  • 按照频率降序打印数字 ... [详细]
  • 本文探讨了如何在无向图中寻找一条从指定起点出发,确保不会连续两次访问同一条边的情况下,获得最大成本路径的方法。 ... [详细]
  • 开发笔记:Python:GUI之tkinter学习笔记1控件的介绍及使用
    开发笔记:Python:GUI之tkinter学习笔记1控件的介绍及使用 ... [详细]
  • 探讨Codeforces 1154D中的自动行走机器人问题,通过策略性地使用两种类型的电池来实现最远距离行走。 ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 本文通过C++代码示例,详细介绍了如何利用邻接矩阵构建无向图,并实现图的深度优先遍历(DFS)。文章包括了完整的代码实现,以及对关键函数的解释。 ... [详细]
  • 题目链接:请点击这里。本题将图形视为波动,其中波峰被淹没时部分数减少,而波谷被淹没时部分数增加。因此,需要预先处理所有波峰和波谷的位置。特别地,图形的两端点需要特殊处理,可以通过设置边界条件来简化问题。 ... [详细]
  • 面临考试压力,急需解决四个编程问题,包括实现乒乓球的动态效果、计算特定日期是一年的第几天、逆序输出数字以及创建弹出菜单。每个问题的解决都能在TC3.0环境中获得50分。 ... [详细]
  • 题目来源:http://www.spoj.com/problems/TSUM/。题目描述:给定一个包含N个不同整数的序列,计算所有可能的三个不同索引上的整数之和,并统计每个和出现的不同三元组数量。 ... [详细]
  • 题目概述:给定一棵带颜色节点的树,目标是找到一种方法,通过删除某些边使得每个连通分量内的节点颜色相同。需要计算出所有可能的合法边集的数量。使用动态规划的方法,特别是树形DP来解决问题。 ... [详细]
  • 本文详细介绍了在使用EmguCV进行图像处理时常用的函数及其应用场景,旨在帮助开发者更好地理解和利用这些工具。 ... [详细]
  • Android开发技巧:实现带描边的圆角图片
    本文介绍了一种在Android应用中实现带描边的圆角图片的方法。通过使用BitmapShader类,开发者可以轻松地为图片添加圆角和描边效果,提升应用的视觉体验。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统上快速安装和配置Bitnami版本的GitLab,包括下载安装文件、执行安装过程以及设置邮件服务等步骤。 ... [详细]
  • Android 自定义指南针视图实现
    本文介绍了如何在Android应用中自定义绘制指南针视图,包括方位角的计算、不同方向的颜色区分以及视图随手势移动的功能实现。 ... [详细]
  • 原作者:小甲鱼(注:最左边是文件头的偏移量。)IMAGE_DOS_HEADERSTRUCT{+0hWORDe_magicMagi ... [详细]
author-avatar
2502885590_296
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有