ccf2016年4月10日认证考试 俄罗斯方块问题思路
ccf2016年4月10日认证考试 俄罗斯方块问题思路
今天看了ccf认证考试试题,遇到一个俄罗斯方块的问题,感觉蛮有意思的和大家分享一下。
题目大概是这样的:
给定一个如下类型的输入,其中开始的15*10矩阵为原本的俄罗斯方块空间,1表示有方块,0表示无方块,接下来的4*4矩阵为将要落下的一个方块,并且其中的方块只能是4连通的。最后一行表示要落下的方块矩阵最左边为方块空间的第几行。
//15*10方块空间0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 1 0 00 0 1 0 1 0 0 0 1 00 0 0 0 1 1 0 0 1 0//4*4下落方块0 0 0 01 1 0 01 1 0 00 0 0 0//行距6
要求输出的是方块落下时的样子,不要求做消除,如下所示:
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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 //可以看到下落0 0 1 0 1 1 1 0 1 0 //的方块。0 0 0 0 1 1 0 0 1 0
我的想法是这样的,我们是否可以模拟俄罗斯方块一步步往下沉得动作,最后即可获得最终落下的位置。那怎么模拟这个动作呢?我们先从我们要下落的方块矩阵看起:
0 0 0 01 1 0 01 1 0 00 0 0 0
首先需要获得这个方块每个点在4*4矩阵中的位置:
//遍历for(int i = 0; i < 4; i++){for(int j = 0;j < 4; j++){if(input[i][j] == 1){x[z] = i;y[z] = j + colunm;z++;}}}
其中,input数组为输入的4*4矩阵,colunm为输入的最后一个参数的自减。
之后,处理掉4*4矩阵开始的几个全为0的行:
int t = x[1];//初始化for(int i = 0; i < 4; i++){x[i] = x[i] - t;}
然后,我们就可以开始模拟方块的下沉了:
//下沉while(flag == true){for(int i = 0; i < 4; i++){if(data[x[i] + offset][y[i]] == 0){count++;}}if(count == 4){offset++;count = 0;}else{for(int i = 0; i < 4; i++){data[x[i] + offset - 1][y[i]] = 1;}flag = false;}}
其中,data数组表示方块空间;flag用来判断是否跳出while循环,开始声明为true;count用来判断是否此时所在的4*4矩阵是否可以满足条件,等于4时方块才可以继续往下移动一行,否则说明方块不能往下沉了,此时填充当前所在的空间,即为我们需要得到的结果。
ccf2016年4月10日认证考试 俄罗斯方块问题思路相关推荐
- 张家界市4月份计算机职称,2017年4月张家界计算机应用能力考试报名时间4月10日起...
[摘要]环球网校提醒大家2017年4月张家界计算机应用能力考试报名时间4月10日起以下介绍了职称计算机考试时间.考试注意事项,希望对大家备考职称计算机考试有帮助,更多资料敬请关注环球职称计算机考试频道 ...
- 湖北省计算机二级报名时间2020年12,2020年3月湖北省计算机等级考试报名_时间:12月10日-12月23日...
湖北省 计算机等级 导语:2020年3月全国计算机等级考试将于3月28日-30日举行,小编整理了湖北省报名时间,供大家参考,欢迎大家点击查看!更多计算机考试动态|模拟试题|历年真题请关注计算机学习网! ...
- 广东2021高考成绩查询6,2021全国高考6月10日全部结束 预计最快6月23日可查高考成绩...
天气网讯,今天(10日)是部分地区高考最后一天,不少考生和家长都关心高考成绩的查询时间.据了解,安徽.江西.四川.广西.内蒙古预计最快6月23日可查高考成绩,小编在这也祝愿所有考生都能考上心仪的大学校 ...
- 2020德勤面试开始了吗_2020下半年教师资格证面试时间已出!12月10日开始报名
安徽省2020年下半年中小学教师资格考试面试详情 一.面试时间安排 (一)报名:2020年12月10日8:00-13日17:00: (二)审核:2020年12月10日8:00-14日17:00: (三 ...
- 12月北京CISA认证考试考前辅导会成功举办
12月北京CISA认证考试考前辅导会成功举办 2012年12月1日上午,由上海汇哲信息科技有限公司与国际信息安全学习联盟联合举办的CISA考前辅导(北京场)在北京海淀区中关村数码大厦顺利举办.这是国盟 ...
- 易生信群体和单细胞转录组专题第6期于5月10日在北京开课了
群体转录组是我们最常接触到的一种高通量测序数据类型,其实验方法成熟,花费较低,分析思路简洁清晰,是入门生信,解决最常见问题的首选. 单细胞分析是近几年的明星技术,多次被Nature.Science评为 ...
- 截止9月10日苹果审核指南中文版
苹果在9月3日对App Store审核指南进行了重大更新,新加入了扩展.HealthKit.HomeKit以及TestFlight相关内容.另外,在9月10日新品公布会之后,苹果再次更新了App St ...
- 互联网晚报 | 9月10日 星期五 | 美团启动数字人民币低碳出行试点;vivo X70系列正式发布;旷视科技科创板IPO过会...
今日看点 ✦ 腾讯:"共同富裕专项计划"500亿元资金首期开始落地 ✦ TCL启动全球生态合作发展战略,在三大领域投入200亿 ✦ vivo X70系列发布:搭载自研影像芯片V1, ...
- 10月10日科技资讯 |罗永浩向老同事道歉;三星漏洞已波及四千万用户;Clojure 1.11 即将发布 | 极客头条
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 整理 | 胡 ...
最新文章
- linux下yum包更新不了
- anaconda应答文件
- 数据结构——HDU1312:Red and Black(DFS)
- nodejs的调试debug
- JS 内置对象 String对象
- 中小企业CRM评测-八百客
- Ubuntu SSH Algorithm negotiation failed
- jettytomcat对待表单过长问题
- CSU 1573 最多的数字
- scanf可以输入负数吗_C语言进行数据的多输入多输出
- Parhaps you are running on a JRE rather than a JDK?
- 如何设置任务栏和开始菜单属性中的 分组相似任务栏按钮 的个数
- 第一次作业 四班05
- 11月13日云栖精选夜读:阿里云中间件产品科技普惠企业,满足多场景需求
- softmax的简洁实现
- python房价预测_Python实战:使用线性回归预测房价
- excel小技巧 生成递增时间区间
- 网友心中的高分电影合集,大家一起来拯救剧荒!欢迎补充!!!
- internet时间同步服务器地址(中国国家授时中心)
- 微信Windows版无法备份聊天记录
热门文章
- MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决
- android控制板
- 第8章 对象引用、可变性和垃圾回收
- YOLOv5的Tricks | 【Trick13】YOLOv5的detect.py脚本的解析与简化
- Postman工具的简单介绍
- 下拉框反选的几种方式
- c语言高斯误差函数,erfc - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- 如果重新学习计算机,你的学习路线是什么?
- linux编译运行uart,Kindle4: 编译并运行upstream linux kernel – v4.4
- 毕达哥拉斯素数的王伟猜想