当前位置: 首页 > news >正文

河南微网站开发亚马逊雨林电影

河南微网站开发,亚马逊雨林电影,android开发教程网站,大石桥网站建设题目描述#xff1a; 你有一张某海域 NN 像素的照片#xff0c;”.”表示海洋、”#”表示陆地#xff0c;如下所示#xff1a; ....... .##.... .##.... ....##. ..####. ...###. .......其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿#xff0c;例如上图就…题目描述 你有一张某海域 N×N 像素的照片”.”表示海洋、”#”表示陆地如下所示 ....... .##.... .##.... ....##. ..####. ...###. .......其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿例如上图就有 22 座岛屿。 由于全球变暖导致了海面上升科学家预测未来几十年岛屿边缘一个像素的范围会被海水淹没。 具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋)它就会被淹没。 例如上图中的海域未来会变成如下样子 ....... ....... ....... ....... ....#.. ....... .......请你计算依照科学家的预测照片中有多少岛屿会被完全淹没。 输入格式 第一行包含一个整数N。 以下 N 行 N 列包含一个由字符”#”和”.”构成的 N×N 字符矩阵代表一张海域照片”#”表示陆地”.”表示海洋。 照片保证第 1 行、第 1 列、第 N 行、第 N 列的像素都是海洋。 输出格式 一个整数表示答案。 数据范围 1≤N≤1000 输入样例1 7 ....... .##.... .##.... ....##. ..####. ...###. .......输出样例1 1输入样例2 9 ......... .##.##... .#####... .##.##... ......... .##.#.... .#.###... .#..#.... .........输出样例2 1 分析步骤 第一读完题目我们可以发现靠近海边的陆地需要变成海洋只有一块陆地周围全是陆地才可以不被淹没。我们可以把陆地周围全是陆地的这种地方叫做高地海水是进不了的所以只能淹没低洼的地方所以符合我们 flood fill 算法的思想 再结合宽搜的算法就可以解出这道题目。 第二书写主函数构建整体架构 首先输入值 再套用flood fill算法的一个模板从第一个位置开始遍历如果遇到了 “ # ” 并且这个点是没有被搜过的才可以进入我们的 bfs 算法去搜索。我们定义一个 total 代表 遍历到了几个“#” 定义一个bound 代表 这些陆地是否靠近海洋只有遍历到的 陆地的数量 和 靠近海洋的陆地的数量一样我们才可以确定这个小岛会消失 res int main() {cinn;for(int i 0 ; i n ; i ){cing[i];}for(int i 0 ; i n ; i){for(int j 0 ; j n ; j ){if(g[i][j] # and !st[i][j]){int total 0 , bound 0;bfs(i,j,total,bound);if(total bound) res;}}}coutres;return 0; } 第三书写BFS算法去遍历图中每一个点 首先我们一般写bfs会自己手动写一个队列手动将刚刚进入的横纵坐标入队所以定义头节点为0 尾节点也为0更改状态这个点为已经走过了 其次开始进入while循环只要我们的队列不为空我们的循环就不会停止因为我们遍历到的每一个符合条件的点都会入队所以只有将在队列里的每一个点都处理过后才可以停止循环。 我们定义一个迭代器 t 让他自己去向后遍历队列随后 total 为什么 因为能进入到队列的点都是“ # ”为陆地而我们的total的意义也正是代表 遍历到了几个“#”  再定义一个is_bound,这个是代表陆地旁边是否有海洋如果有海洋就将它改为true只有它为true了 我们的bound才能。 随后进入我们的四方搜索上下左右定义一个a让它代表横坐标 定义一个b让他代表纵坐标。我们得到了新的一个坐标之后一般要进行三种判断1.坐标是否越界2.该坐标是否已经走过了3.该点能不能走因为有些题目有路障。对于此题我们要进行1和2 第三点要进行改变应当改为如果是海洋的话那么就证明该点的陆地应该被淹没所以将is_bound改为true。最后如果能通过种种限制的话那么就因该是符合我们条件的坐标所以要更新一下坐标状态再将此点入队。最终判断一下如果该点的四周有海洋的话 则 bound。 void bfs(int xx , int yy , int total ,int bound){int hh 0 , tt 0;q[0] {xx,yy};st[xx][yy] true;while(hh tt){auto t q[hh];total ;bool is_bound false;for(int i 0 ; i 4 ; i){int a dx[i]t.x , b dy[i] t.y;if(st[a][b])continue;if(a0||b0||an||bn) continue;if(g[a][b] .){is_bound true;continue;}st[a][b] true;q[tt] {a,b};}if(is_bound) bound;} } 注意注意我们这里的total和bound要进行地址传值这样在bfs中改变的值才可以反映到主函数之中 代码 #include iostream #include cstring #include algorithm #define x first #define y secondusing namespace std; const int N 1e310; typedef pairint, int PII; PII q[N*N];char g[N][N]; // 这是存地图的数组 bool st[N][N]; // 判断坐标是否走过 int n , res 0; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1};//以00为原点 上下左右搜索一个单位长度void bfs(int xx , int yy , int total ,int bound){int hh 0 , tt 0;q[0] {xx,yy};st[xx][yy] true;while(hh tt){auto t q[hh];total ;bool is_bound false;for(int i 0 ; i 4 ; i){int a dx[i]t.x , b dy[i] t.y;if(st[a][b])continue;if(a0||b0||an||bn) continue;if(g[a][b] .){is_bound true;continue;}st[a][b] true;q[tt] {a,b};}if(is_bound) bound;} }int main() {cinn;for(int i 0 ; i n ; i ){cing[i];}for(int i 0 ; i n ; i){for(int j 0 ; j n ; j ){if(g[i][j] # and !st[i][j]){int total 0 , bound 0;bfs(i,j,total,bound);if(total bound) res;}}}coutres;return 0; }
http://www.hkea.cn/news/14572479/

相关文章:

  • 自己创业网站开发公司的网址格式
  • 天商阳光网站邮箱北京最近的新闻大事
  • 扫码进入网站 怎么做建设网站翻译英文翻译
  • 跨境电商自建站平台深圳网站开发哪家好
  • 常设中国建设工程法律论坛网站2022百度seo最新规则
  • 网站建设与管理 自考广西城乡住房建设厅网站
  • app开发科技网站建设h5响应式网站建设代理
  • 域名注册好了怎么样做网站杭州模板网站制作方案
  • 网站平台如何推广缪斯国际设计公司官网
  • 做像百姓网这样网站多少钱网站域名组成
  • 网站开发通过什么途径接活自己设计手机的网站
  • 金耀网站建设网站制作wordpress模板文件编辑插件
  • 肇庆建设局网站wordpress优化加速缓存中国
  • 1号网站建设 高端网站建设wordpress 金融主题
  • 让客户留住更长时间访问你的网站长沙旅游景点大全排名
  • 俄罗斯做电商网站微信小程序平台官网
  • 南宁seo公司百度seo关键词排名优化工具
  • 现在建设网站落后了北京网站优化校学费
  • 云南建设厅网站工程师网站建设如何做
  • 手机网站的网址是什么原因浙江省建设厅网站高工
  • 网站建设公司哪家最好一般网站开发好的框架都有哪些
  • 网站建站之后需要维护吗投票小程序制作
  • 肇庆网站制作企业手机网站哪些功能
  • 青岛做网站哪家优化好wordpress文章导入公众号
  • 免费小说网站怎么做哪个公司做视频网站
  • 湖南常德广宇建设网站青岛网站建设谁家好一些
  • 公司需要做网站吗网站流水怎么做
  • 影楼网站设计织梦网站建设交流群
  • 教着做美食的网站wordpress商务套餐
  • 站点建错了网页能打开吗兰州市生态建设管理局网站