博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法实验题 5.1 湖泊
阅读量:6276 次
发布时间:2019-06-22

本文共 1704 字,大约阅读时间需要 5 分钟。

问题描述

G 最近开始对地理感兴趣,小 G 找来了伯兰的地图,并用网格将其划分。被划分后
的地图是一个 n*m 的矩形。每一个单元格的大小是 1*1 的,每一格代表着水或者陆地。地
图外则代表着海洋。湖泊是相邻的所有代表水的格子组成的不与海洋相邻的最大区域。地图
上有着超过 k 的湖泊,小 G 想将其中的一些代表水的格子变为陆地,使得地图中只存在精
确的 k 个湖泊,又不想改变太多的格子。所以,他请你帮忙计算使得地图中只存在 k 个湖泊
所需要改变的最小格子数。
★数据输入
输入的第一行为包括三个整数n,m,k(1 ≤ n, m ≤ 50, 0 ≤ k ≤ 50)表示地图的大小和需
要保存的湖泊数量
接下来 n 行,每行包括 m 个字符用来表示地图信息,只包括“.”“*”两种字符。( “.”
表示水, “*”表示陆地)。
输入数据保证原始的湖泊数量大于等于 k
30%的数据 n*m<=30
70%的数据 n*m<=200
100%的数据 n*m<=2500

题意:

给n,m和k,n和m为所给矩阵的高和宽。k是要求最多剩下的湖的数量。

在所给的矩阵中,*代表陆地,.代表水。
湖的定义是一片连续的水(上下左右四个方向),并且水不含边界。
水含边界的情况被成为海。
问最少填多少湖的面积,使得湖的数量减少到k.

海洋包围的小岛,岛内的有湖,'.'代表水,'*'代表陆地,给出的n*m的地图里至少有k个湖,求填掉面积尽量少的水,使得湖的数量正好为k。

解题思路:先深搜DFS找出所有的湖泊,然后按照面积从小到大排序,若湖的数量为cnt,填掉前cnt-k个湖。

 

#include
#include
#include
#include
using namespace std;//author:zeze 2016-12-11 13:24:39//DFS+Greedystruct lakes{ int x,y;//lake site int num;//lake size}lake[2500];bool cmp(lakes a,lakes b){ return a.num
=0&&xx
=0&&yy
=0&&xx
=0&&yy

 

 

#include
using namespace std;int n,m,k;char a[55][55];bool vis[55][55];int dx[6]={
0,0,1,-1};int dy[6]={
1,-1,0,0};int num,cnt,islake;int ans;struct lake{ int x,y; int num; int id;}lk[2600];bool cmp(lake a,lake b){ return a.num
=0&&nx
=0&&a[nx][ny]=='.'&&!vis[nx][ny]) dfs(nx,ny); }}void fil(int x,int y,int id){ vis[x][y]=1; ans++; a[x][y]='*';//填充这个湖 for(int i=0;i<4;i++){ int nx=x+dx[i],ny=y+dy[i]; if(nx>=0&&nx
=0&&a[nx][ny]=='.'&&!vis[nx][ny]) fil(nx,ny,id); }}int main(){ cnt=0; scanf("%d%d%d",&n,&m,&k); for(int i=0;i

 

转载地址:http://pbgpa.baihongyu.com/

你可能感兴趣的文章
再谈GC2:Java垃圾收集器与GC日志分析实践
查看>>
IDEA环境下SSM整合------环境配置
查看>>
构建自适应的手机页面
查看>>
YARN的AsyncDispatcher原理
查看>>
[Coursera][From Nand to Tetris / Part I] 第六周 汇编器项目 python 实现
查看>>
阻止了 WannaCry 扩散的研究员承认开发恶意软件
查看>>
云栖大会首设“科技脱贫”专场 ,20张会场门票等你来拿!
查看>>
ZLG 发布开源 GUI 引擎 AWTK
查看>>
一个不可思议的MySQL慢查分析与解决
查看>>
[Cake] 0.C#Make自动化构建-简介
查看>>
《TCP/IP协议》- TCP协议知识目录
查看>>
详尽! Win10安装Java8+Tomcat9!
查看>>
1127
查看>>
一次痛的经历
查看>>
智能运维(AIOps)时代开启,一文帮你快速了解其定义与发展现状
查看>>
第1讲 快速入门 《Kotlin 极简教程 》
查看>>
[Hadoop]MapReducer工作过程
查看>>
VMware PowerCli批量实现虚拟机快照备份
查看>>
小程聊微服务-基于dubbo的mock测试系统
查看>>
在阿里云服务器使用scrapyd部署scrapy项目
查看>>