技巧总结

  • 对于需要先判断可不可以再进行“填充”数组的操作,可以利用memcpy,在一个新的数组上“试错”
  • 小数组在大数组中实现遍历,可以利用小数组的行列遍历,然后加上大数组的偏移量就可以遍历大数组

题目描述

解题思路

  • 该题数据范围不大,只有两百年,可以采用暴力枚举来解题
  • 从上而下枚举每一行,看这个图案会不会与原始图案相重叠,第一次出现重叠的位置,其上一行就是刚好阻塞的地方,进行输出即使答案,可以借鉴我代码中的draw函数模拟图案在每一行时出现的画面
  • 还有一个问题就是,假如最后一行没有原始图案,那么这个新图案到最后一行也不会遇到障碍,所以在第十六行添加一层障碍

代码实现

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 20;int G[N][N], s[N][N], p[N][N]; //G是原始画布,s是增加了p后的新画布bool draw(int x, int y)
{memcpy(s, G, sizeof(s)); //将原始画布复制到新画布,在新画布上模拟下落时的画面for (int i = 0; i < 4; i ++){for (int j = 0; j < 4; j ++){if (p[i][j]){if (G[i + x][j + y]) //此时重叠{return true;}s[i + x][j + y] = 1; //没有 重叠,在新画布上画上新图案}}}return false;
}int main()
{for (int i = 1; i <= 15; i ++){for (int j = 1; j <= 10; j ++){cin >> G[i][j];}}for (int j = 1; j <= 10; j ++) //手动补底,防止没有障碍穿底的情况{G[16][j] = 1;}for (int i = 0; i < 4; i ++){for (int j = 0; j < 4; j ++){cin >> p[i][j];}}int c = 0;cin >> c;for (int i = 1; ; i ++) //因为第十六行设置了底,所以必有上界{if (draw(i, c)) //如果第i行出现了重叠{draw(i - 1, c); //则说明第i - 1行是刚好被卡住的状态break;}}for (int i = 1; i <= 15; i ++){for (int j = 1; j <= 10; j ++){cout << s[i][j] << " "; //此时新画布上画的就是刚好阻塞时的画面}cout << endl;}return 0;
}

CCF 俄罗斯方块(满分代码 + 解题思路 + 技巧总结)201604 - 2相关推荐

  1. CCF 集合竞价 (满分代码 + 解题思路 + 技巧总结)201412 - 3

    技巧总结 当需要一对数据取最值时,不一定需要用pair进行存储(比较繁琐),利用两个变量维护当前最值 要注意数据范围是否会爆int 所有数据定义时一定不要忘记初始化 题目描述 解题思路 数据范围不大只 ...

  2. CCF 工资计算(满分代码 + 解题思路 + 技巧总结)201612 - 2

    技巧总结 数据范围很重要,以及题目中给出的数据约束条件也很重要,会影响解题的方法 有时候根据题意解题并不容易,可以考虑逆向思维,比如该题,逆着不好算,正着来算 划分多区间的条件,可以利用数组进行存储模 ...

  3. CCF 分蛋糕(满分代码 + 解题思路 :模拟)201703-1

    题目描述 解题思路 从第一个拿蛋糕的人开始枚举,每一轮迭代表示一个人拿蛋糕的过程(不论这个人是否能拿到>=k的蛋糕,他一定会拿到蛋糕,所以能拿到蛋糕的同学数量+1) 根据累计这个人拿蛋糕的分量是 ...

  4. leetcode探索专题中的初级算法练习题(python代码+解题思路)

    本文记录leetcode探索专题中的初级算法练习题,附python实现代码&解题思路,做题过程不免查阅网络资料,侵删~如有错误,欢迎指正交流! 目录 专题一:数组: 26.从排序数组中删除重复 ...

  5. 【JAVA】力扣第197场周赛代码+解题思路

    目录 5460. 好数对的数目 解题锦囊 思路一:常规(未用解题锦囊) 代码 思路二:使用解题锦囊 5461. 仅含 1 的子串数 解题锦囊 代码 错误点 5211. 概率最大的路径 解题锦囊 代码 ...

  6. 算法和编程面试题精选TOP50!(附代码+解题思路+答案)

    AI技术年度盛会即将开启!11月8-9日,来自Google.Amazon.微软.Facebook.LinkedIn.阿里巴巴.百度.腾讯.美团.京东.小米.字节跳动.滴滴.商汤.旷视.思必驰.第四范式 ...

  7. 算法和编程面试题精选 TOP50!(附代码+解题思路+答案)

    本篇文章的面试资源,主要包含五部分内容:数组.链表.字符串.二叉树和重要算法(如排序算法)的编程面试题,其中每部分内容,都列出了一些最常被问到的热门问题.并且在每个题目后,给出了可以参考的解决思路和代 ...

  8. 干货 | 算法和编程面试题精选TOP50!(附代码+解题思路+答案)

    作者 | javinpaul 编译 | 王天宇.Jane 整理 | Jane [导读]之前我们给同学们推荐了很多关于 Python 的面试资源,大家都表示很有用.这次营长表示要翻 Java 的牌子啦~ ...

  9. 【JAVA】力扣第198场周赛代码+解题思路——【排名第 1 ~ 300 名的参赛者可获「微软中国」简历内推机会】做对前两道就能排到268/ 5778(4.6%)

    目录 前言 一.题目:5464. 换酒问题 题解 代码 二.题目:5465. 子树中标签相同的节点数 题解 代码 三.题目:5466. 最多的不重叠子字符串 题解 代码 四.5467. 找到最接近目标 ...

最新文章

  1. 百度,一面,二面知识点
  2. linux 交叉编译 libxml2,openssl,libssh2
  3. 参数定义sql 递归查询子目录
  4. kernel 下串口serial输入输出控制,屏蔽log的输出
  5. Freemarker自定义标签
  6. 红外倒车雷达原理图_硅光电倍增管 (SiPM) 直接飞行时间 (dToF) 激光雷达平台为工业测距应用提供现成的设计...
  7. hdu-5707-Combine String
  8. finereport前端组件类思维导图
  9. C# Invoke 和 BeginInvoke的区别和共同点
  10. Caffe学习:Forward and Backward
  11. 一张图看懂ITIL V3 与ITIL4的主要差异
  12. matlab 图像处理之直线拟合
  13. 打开.class文件
  14. VOC2007数据集详细分析
  15. 安全生产计算机考试成绩查询,安全生产在线模拟考试成绩查询
  16. 《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
  17. (javascript)(基础知识+实例) 15.JSON,对象克隆,正则表达式
  18. 计算机的好处和坏处的英语作文,电脑利与弊英语作文
  19. APM的3DR无线数传的安装和调试
  20. 开源软件新时代 55个经典开源Windows工具

热门文章

  1. python检测键盘输入termios、等待按键超时检测
  2. 企业微信推送消息延迟_微信接收消息总是延迟?没有提醒,这3个功能赶紧设置一下...
  3. 微信发布4条新规!再也不用帮好友拼团砍价了,网友纷纷称赞
  4. 深圳一AI公司人脸数据泄露,超256万用户敏感信息在“裸奔”!
  5. java se和java_Java SE 9非常适合灵活,可扩展和无服务器的未来
  6. linux提交任务执行时间,Linux之任务计划
  7. shell内建命令--Linux
  8. 学习记录【1】--chrome的控制台打开很慢
  9. 搜狗输入法低版本导致谷歌浏览器上传下载时崩溃
  10. hdmi接口有什么用_VGA、DVI、HDMI、DP、TYPE-C接口都有什么区别?