CCF 2016-04-2 俄罗斯方块

题目

问题描述

   俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。

  游戏在一个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个数字,相邻的数字之间用一个空格分隔,表示板块下落后的方格图。注意,你不需要处理最终的消行。

样例输入

  1. 0 0 0 0 0 0 0 0 0 0
  2. 0 0 0 0 0 0 0 0 0 0
  3. 0 0 0 0 0 0 0 0 0 0
  4. 0 0 0 0 0 0 0 0 0 0
  5. 0 0 0 0 0 0 0 0 0 0
  6. 0 0 0 0 0 0 0 0 0 0
  7. 0 0 0 0 0 0 0 0 0 0
  8. 0 0 0 0 0 0 0 0 0 0
  9. 0 0 0 0 0 0 0 0 0 0
  10. 0 0 0 0 0 0 0 0 0 0
  11. 0 0 0 0 0 0 0 1 0 0
  12. 0 0 0 0 0 0 1 0 0 0
  13. 0 0 0 0 0 0 1 0 0 0
  14. 1 1 1 0 0 0 1 1 1 1
  15. 0 0 0 0 1 0 0 0 0 0
  16. 0 0 0 0
  17. 0 1 1 1
  18. 0 0 0 1
  19. 0 0 0 0
  20. 3

样例输出

  1. 0 0 0 0 0 0 0 0 0 0
  2. 0 0 0 0 0 0 0 0 0 0
  3. 0 0 0 0 0 0 0 0 0 0
  4. 0 0 0 0 0 0 0 0 0 0
  5. 0 0 0 0 0 0 0 0 0 0
  6. 0 0 0 0 0 0 0 0 0 0
  7. 0 0 0 0 0 0 0 0 0 0
  8. 0 0 0 0 0 0 0 0 0 0
  9. 0 0 0 0 0 0 0 0 0 0
  10. 0 0 0 0 0 0 0 0 0 0
  11. 0 0 0 0 0 0 0 1 0 0
  12. 0 0 0 0 0 0 1 0 0 0
  13. 0 0 0 0 0 0 1 0 0 0
  14. 1 1 1 1 1 1 1 1 1 1
  15. 0 0 0 0 1 1 0 0 0 0

思路

以前的代码,暴力向下计算即可。

代码

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,i,k,j,t,x;
  6. int a[20][11],b[4][4],c[20][11];
  7. for(i=1;i<=15;i++)
  8. {
  9. for(j=1;j<=10;j++)
  10. {
  11. cin>>a[i][j];
  12. c[i][j]=a[i][j];
  13. }
  14. }
  15. for(i=16;i<=19;i++)
  16. {
  17. for(j=1;j<=10;j++)
  18. {
  19. a[i][j]=1;
  20. c[i][j]=a[i][j];
  21. }
  22. }
  23. for(i=1;i<=4;i++)
  24. {
  25. for(j=1;j<=4;j++)
  26. {
  27. cin>>b[i][j];
  28. }
  29. }
  30. cin>>k;
  31. int po=1;
  32. for(i=1;i<=19&&po;i++)
  33. {
  34. po=1;
  35. for(j=4;j>=1&&po&&i+j-4>=1;j--)
  36. {
  37. for(x=1;x<=4&&po;x++)
  38. {
  39. c[i+j-4][k+x-1]=a[i+j-4][k+x-1]+b[j][x];
  40. if(c[i+j-4][k+x-1]>1)
  41. po=0;
  42. }
  43. }
  44. }
  45. i=i-2;
  46. for(j=4;j>=1;j--)
  47. {
  48. for(x=1;x<=4;x++)
  49. {
  50. a[i+j-4][k+x-1]=a[i+j-4][k+x-1]+b[j][x];
  51. }
  52. }
  53. for(i=1;i<=15;i++)
  54. {
  55. for(j=1;j<=10;j++)
  56. {
  57. cout<<a[i][j];
  58. if(j!=10)
  59. cout<<" ";
  60. }
  61. if(i!=15)
  62. cout<<endl;
  63. }
  64. return 0;
  65. }

CCF 2016-04-2 俄罗斯方块的更多相关文章

  1. 学习图像算法阶段性总结 (附一键修图Demo) 2016.04.19更新demo

    今天特别感慨,自己从决定研究图像处理,势必要做出一键修图算法. 经历了,三个多月的书籍积累,三个多月的算法调整以及优化. 人是一种奇怪的动物,当你做不到的时候,你以为做到了,自己会感觉很爽,很有成就感 ...

  2. java 时间格式化(2016.04.12 12:32:55)

    输入的时间格式如:2016.04.12 12:32:55所示: 想要获取一定格式的日期,时间的方法 String startString = "2016.04.25 12:25:44&quo ...

  3. KaOS 2016.04 发布,桌面 Linux 发行版

    KaOS 2016.04 发布了,KaOS是一份桌面Linux发行,其特色在于最新版本的KDE桌面环境及其他流行的使用Qt工具包的软件程序.它最初基于Arch Linux,但从2013年四月起,开发者 ...

  4. Understand:高效代码静态分析神器详解(一) | 墨香博客 http://www.codemx.cn/2016/04/30/Understand01/

    Understand:高效代码静态分析神器详解(一) | 墨香博客 http://www.codemx.cn/2016/04/30/Understand01/ ===== 之前用Windows系统,一 ...

  5. 关于Android开发的一些个人总结(2016.04)

    引言 本文主要目标是整理下我在2016年第一季度针对Android学习的内容,不会深入细节,只是简单聊聊框架以及学习的方法. 我的Android之路 因为之前对Android有一个简单的接触,研究生期 ...

  6. 2016/04/13 ①html 中各种分割线------------------------------------------ ② 控制文字显示

    ①各种分割线Html代码 1.<HR> 2.<HR align=center width=300 color=#987cb9 SIZE=1>align 线条位置(可选left. ...

  7. ACM-东北大学程序设计竞赛-网络赛(2016.04.16)

    Problem: A Time limit: 1s    Mem limit: 64 MB    AC/Submission: 0/0    Discuss Back   Ranklist  Stat ...

  8. ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)

    A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成. ...

  9. Cheatsheet: 2016 04.01 ~ 04.30

    .NET String format Setting up Ubuntu for .NET Development ASP.​NET Core and Angular2 - Part 1 - Upda ...

  10. “耐撕”团队 2016.04.05 站立会议

    1. 时间: 20:10--20:25  共计15分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...

随机推荐

  1. axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

    在做项目时,用到axios,数据用post提交时,老是报错,错误提示为: Access to XMLHttpRequest at 'http://127.0.0.1:3000/api/add' fro ...

  2. #C++初学记录(奶酪#并查集)

    原题目:牛客网 题目描述 : 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 ...

  3. 【软工实践】Beta冲刺(5/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 将数据分析以可视化形式展示出来 新增数据分析展示等功能API 服务器后端部署, ...

  4. nginx 二级目录反向代理

    location /faceapi/ { #default_type application/json; # return 200 '{"status":"success ...

  5. 支付宝即时到账交易接口C#接入方式的几个坑

    1.在官方文档中 https://docs.open.alipay.com/62/104743 可以清楚看到input_charset前面没有要求加下横杠,可是请求示例是带着的.经过实验得知,这个必须 ...

  6. Nginx location wildcard

    Module ngx_http_core_modulehttps://nginx.org/en/docs/http/ngx_http_core_module.html#location locatio ...

  7. 2-5 【ngFor指令 事件的处理和样式绑定】顶部导航支持选中状态

    索引的获取 first和last是布尔类型的 奇数偶数 []方括号表示的是数据绑定 ()圆括号就是事件绑定 . 开始代码 我们要实现的功能是菜单点击后,就变色 这样我们就得到了索引. 新建一个clas ...

  8. 【WebSocket】WebSocket快速入门

    WebSocket介绍 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动 ...

  9. [LeetCode] 171. Excel Sheet Column Number 求Excel表列序号

    Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...

  10. [LeetCode] 316. Remove Duplicate Letters 移除重复字母

    Given a string which contains only lowercase letters, remove duplicate letters so that every letter ...