CCF201604-2 俄罗斯方块
问题描述:
试题编号: | 201604-2 |
试题名称: | 俄罗斯方块 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 输入格式 输入的前15行包含初始的方格图,每行包含10个数字,相邻的数字用空格分隔。如果一个数字是0,表示对应的方格中没有方块,如果数字是1,则表示初始的时候有方块。输入保证前4行中的数字都是0。 输出格式 输出15行,每行10个数字,相邻的数字之间用一个空格分隔,表示板块下落后的方格图。注意,你不需要处理最终的消行。 样例输入 0 0 0 0 0 0 0 0 0 0 样例输出 0 0 0 0 0 0 0 0 0 0 |
解题思路:
这是一个模拟题,模拟俄罗斯方块游戏中,小方块下落的过程。该问题比实际的俄罗斯方块游戏简单多了。关键在于数据表示,然后就是模拟小方块的下落过程。
说明:
数组board[]用来存储俄罗斯方块游戏的方格。底边另外放一行1,可以简化处理程序的逻辑。
数组block[]用于存小方块。输入时使用该数组。
数组coords[]用于存储小方块中为1元素的坐标。用这个进行模拟处理可以加快速度。
需要注意下标间的变换问题,略去程序处理逻辑的说明。
解题代码:
#include <iostream>
const int ROW = 15;
const int COL = 10;
const int N = 4;
int board[ROW+1][COL];
int block[N][N];
struct {int row, col;
} coords[N];
using namespace std;
int main(){int row, col;// 输入数据for(int i=0; i<ROW; i++)for(int j=0; j<COL; j++)cin >> board[i][j];for(int i=0; i<N; i++)for(int j=0; j<N; j++)cin >> block[i][j];cin >> col;// 底边全放1for(int j=0; j<COL; j++)board[ROW][j] = 1;// 提取小方块坐标int k = 0;for(int i=N-1; i>=0; i--)for(int j=0; j<N; j++)if(block[i][j] == 1) {coords[k].row = i;coords[k].col = j;k++;}// 模拟小方块落下过程row = 1;col--;bool checkflag;for(;;) {checkflag = false;for(int i=0; i<N; i++)if(board[row + coords[i].row][col + coords[i].col] == 1) {checkflag = true;break;}if(checkflag)break;row++;}row--;// 合并小方块到方格for(int i=0; i<N; i++)board[row + coords[i].row][col + coords[i].col] = 1;// 输出结果for(int i=0; i<ROW; i++) {for(int j=0; j<COL; j++) {if(j != 0)cout << " ";cout << board[i][j];}cout << endl;}return 0;
}
CCF201604-2 俄罗斯方块相关推荐
- CCF201604-2 俄罗斯方块(100分)
试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个1 ...
- python编的俄罗斯方块游戏下载_python写的俄罗斯方块游戏
python写的俄罗斯方块游戏 功能包括:记录所花费时间;消去的总行数;总分;排行榜,最高记录查看等. 排行榜中包含一系列的统计功能,如单位时间消去的行数,单位时间得分等. from Tkinter ...
- GitHub开源的超逼真俄罗斯方块游戏
俄罗斯方块一直是各类程序语言热衷实现的经典游戏,有很多JavaScript实现版本,本开源项目使用React实现. 项目试玩网址:https://chvin.github.io/react-tetri ...
- Python实现俄罗斯方块
目录 1.外形设计 2.方块设计 3.停靠设计 俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块.但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现 ...
- AI玩俄罗斯方块(Python实现)
目录 1.环境 2.实现机制(Pierre Dellacherie算法) 3.代码实现 人工智能大火的今天,如果还是自己玩俄罗斯方块未免显得太LOW,为什么不对游戏升级,让机器自己去玩俄罗斯方块呢?有 ...
- 如何让AI教机器自己玩俄罗斯方块?
作者 | Ahab 转载自公众号Ahab杂货铺(ID:PythonLearningCamp) 人工智能大火的今天,如果还是自己玩俄罗斯方块未免显得太 LOW,为什么不对游戏升级,让机器自己去玩俄罗斯方 ...
- 500行代码写一个俄罗斯方块游戏
导读:本文我们要制作一个俄罗斯方块游戏. 01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这 ...
- 算法帖——用舞蹈链算法(Dancing Links)求解俄罗斯方块覆盖问题
问题的提出:如下图,用13块俄罗斯方块覆盖8*8的正方形.如何用计算机求解? 解决这类问题的方法不一而足,然而核心思想都是穷举法,不同的方法仅仅是对穷举法进行了优化 用13块不同形状的俄罗斯方块(每个 ...
- python俄罗斯方块算法详解_用 Python 写一个俄罗斯方块游戏 (
@@ -2,34 +2,34 @@ > * 原文作者:[Dr Pommes](https://medium.com/@pommes) > * 译文出自:[掘金翻译计划](https://g ...
- pygame简单的俄罗斯方块游戏和简单的打字游戏
1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...
最新文章
- Boost在Linux和windows下的编译 32位 64位
- mysql 合并相加_mysql 多条记要判断相加减合并一条
- 树与二叉树 | 平衡二叉树
- mysql union all 等效_Mysql联合查询UNION和UNION ALL的使用介绍
- ptcms自动采集小说系统源码 电脑版+手机版
- HDMI接口 PCB布线指南-4层板为例
- HDOJ 1001 Sum Problem
- Android静态壁纸和动态壁纸的使用和理解
- python二级考试难不难_计算机二级python考试难吗
- (完美解决)应用程序无法正常启动(0xc000007b),请单击确定关闭应用程序的解决方案
- BZOJ 3470 Freda’s Walk (期望)
- 支付宝企业付款PHP版本(转账到支付宝账户)
- Java单元测试实践-06.Mock后Stub静态方法
- 和免疫荧光标记说拜拜 | 谷歌Cell论文:深度学习模型预测荧光位置
- 画直方图(hist)
- linux文件写入失败 没有空间,write()调用失败:设备上没有剩余空间:ENOSPC处理...
- MAC压缩的文件在win下减压出来是空文件夹
- 自学软件测试如何得到项目经验,这是我摸爬滚打的实战经验谈...
- windows 11 访问带SMB的文件服务器(小米路由器)
- 易语言文本_解密c,易语言动态加解密例子源码