开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8959|回复: 4
收起左侧

[技术专题] 一个简简单单的算法专题,黑点扩散

[复制链接]
结帖率:52% (11/21)
发表于 2022-3-5 23:04:16 | 显示全部楼层 |阅读模式   江苏省南京市
小蓝在一张无限大的特殊画布上作画。
这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。
小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。
只有这几个格子上有黑色,其它位置都是白色的。
每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。
请问,经过 2020 分钟后,画布上有多少个格子是黑色的。


-----------------------------------

分析:纯数数题。首先可以模拟一下这个无限大的点,在任一一方格内,1分钟扩散的黑点数,不难得出。为5。

所以,我们只要取出最小的扩散点数,和最大的扩散点数,然后暴力枚举即可。

2022-03-05_150119.jpg



答案是:20312088



结帖率:88% (21/24)
发表于 2022-3-21 14:12:28 | 显示全部楼层   四川省成都市
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2022-3-10 10:40:20 | 显示全部楼层   云南省昆明市
回复 支持 反对

使用道具 举报

结帖率:52% (11/21)

签到天数: 5 天

 楼主| 发表于 2022-3-6 12:45:43 | 显示全部楼层   江苏省南京市

算法题就是这样,哈哈。我这属于最简单的,还有什么bfs之类的,也在学习中。

把算法搞通了一点,写程序时遇到逻辑性问题,也许就能够想出一些办法,只有益处,没有坏处。

可以想象,1分钟扩展1个点,可以想象成扩展1次,试想,在一个无限大的方格内,我在一点上点一个黑点,然后扩展一次,就会向上下左右各扩展一个点。就比如如下这个图片

--------------
・ ・ ・ ・
・ ・ 〇 ・
・ ・ ・ ・
・ ・ ・ ・
--------------

扩展一次,肯定会变成这样

-------------
・ ・ 〇 ・
・ 〇 〇 〇
・ ・ 〇 ・
・ ・ ・ ・
-------------

可以看到,扩展一次是以扩散点向上下左右扩散的,所以我们取得扩散点的坐标,然后看扩展几次即可。
比如说上面这个图,扩展了一次,其扩展点是(3,2),那么,扩展一次,最大点就是3+1=4,最小点是3-1=2,我们只需要将X坐标从2枚举到4即可,同样地,Y坐标,2-1=1,2+1=3,所以Y坐标就是从1枚举到3,然后嵌套循环,拿所枚举到点与原点(3,2)相减取绝对值,再判断与原点相减,是否小于扩展点的数,是则累计加1,否则加0(舍弃),即可判断是不是扩展的点的。

例如:

for ( i=2;i<=4;i++)
{
   for(j=1;j<=3;j++)
    {

           依次循环,(2,1),(2,2),(2,3);(3,1),(3,2),(3,3);(4,1),4,2),(4,3)。再把2-原坐标X点(3)+1-原坐标Y点(2)<2,不符合则不加1,如果符合就加1,最后肯定只有上面几个“〇“符合。最终结果也就是5。

    }
}
回复 支持 反对

使用道具 举报

结帖率:100% (18/18)

签到天数: 22 天

发表于 2022-3-6 00:13:01 | 显示全部楼层   福建省泉州市
没看懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表