海水漫灌过程模拟
目录 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模板