海水漫灌过程模拟

目录Part Two: You Got !结束
前言
1.这是的第二个作业 , 在这个作业中 , 你要学习使用常见的容器 , 去解决一些问题 。
2.这门课并不建议使用c++官方的STL容器  , 如,queue等 , 而是要使用斯坦福官方为这堂课专门设置的库中的容器, 如,Grid,等 。在下载好的作业文件中斯坦福库就已经成功导入 , 不需要额外设置 。
下面是斯坦福库官方文档的地址 , 可以查斯坦福容器的语法
3.食用本篇博客的最佳方式是自己先做一遍作业 , 遇到不懂的问题再来看看 。
4. 由于大家在做该作业的时候可能还没有学习数据结构和算法 , 所以我也会写的详细一点 。就是肝会比较痛而已

海水漫灌过程模拟

文章插图
5. 如果看不懂语法 , 要善用c++标准库搜索!!
One:Tides
你要写一个程序模拟海平面上升 。网格里面的数字表示该区域的高度 , 如果海水的高度>=该区域的高度,那么该区域就会泡在水中 。
海水漫灌过程模拟
假如没有地形限制 , 那么海水灌的过程如下
海水漫灌过程模拟

文章插图
图中的数字可以代表每一个格子和水源之间的距离 。
这个过程可以表示为
水从来源格子()流动到距离为1的格子1步骤完成后 , 水从距离为1的格子流向距离为2的格子2步骤完成后 , 水从距离为2的盒子流向距离为3的格子

直到水流到达格子边界 , 水流就会停下来
如果加上地形的限制 , 那么水流停下来就多了一个条件
【海水漫灌过程模拟】不难发现整个过程和网格与格子的距离有关 , 所以我们可以尝试使用bfs(广度优先搜索算法)来解决问题 。
bfs模板