hdu 1241 Oil Deposits 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241
第一次写搜索代码 花了好大的功夫检查 看了别人的结题报告 还是错误一大堆 哎
题目是这样的 @表示油田 *表示非油田 @与其八个方向@组成一片连续油田 一个@*组成的图 文有几片油田
思路:没被标记找大一个@ 在使用dfs 把所有的相连的油田都标记为已查找
然后油田片数+1;
知道找完所有的点;
用递归的方式实现深搜
1 #include<iostream> 2 #include<string> 3 #include<queue> 4 usingnamespace std; 5 int ans=0; 6 bool visit[100][100]={0};//用一个 bool数组表示是否被找过 7 char map[100][100];//存储图形 8 int n,m; 9 int f[8][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,-1,-1,1};//没两位表示一个方向 8个方向10 void dfs(int x,int y)11 { int i,j,k,dx,dy;12 visit[x][y]=1;13 for(i=0;i<8;i++)14 {15 16 dx=x+f[i][0];17 dy=y+f[i][1];18 if(dx<0|| dy<0|| dx>=m || dy>=n || map[dx][dy]=='*'|| visit[dx][dy]==1)//改了很多次才改对 这就是菜鸟
//打得时候忘了visit[dx][dy]==119 continue;20 if(map[dx][dy]=='@'&& visit[dx][dy]==0)21 {visit[dx][dy]=1;22 dfs(dx,dy);//使用了递归的方式 容易理解23 }24 }25 return ;26 }27 int main()28 {29 int i,j;30 while(scanf("%d %d",&m,&n)!=EOF)31 {32 getchar();//下面要输入字符 所以要用getchar 接受回车33 ans=0;34 memset(map,0,sizeof(map));35 memset(visit,0,sizeof(visit));36 if(n==0&& m==0)37 {38 break;39 }40 for(i=0;i<m;i++)41 {42 for(j=0;j<n;j++)43 {44 scanf( "%c",&map[i][j] );45 }46 getchar();47 }48 for(i=0;i<m;i++)49 {50 for(j=0;j<n;j++)51 {52 if(visit[i][j]==0&& map[i][j]=='@')53 54 { 55 dfs(i,j); 56 ans++;57 }58 }59 }60 printf("%d\n",ans);61 }62 //system("pause");63 return0;64 }
转载于:https://www.cnblogs.com/yujiaao/archive/2011/08/24/2151540.html
hdu 1241 Oil Deposits 解题报告相关推荐
- HDU 1241 Oil Deposits
题目大意是找到独立的油田个数,所谓独立就是跟它相邻的八个方向上都不能再有别的油田.思路就是每遇到一个'@'都要将它周围的所有'@'都给改成'*',用DFS跟BFS都可以,这里是DFS的代码: AC c ...
- hdu 1003 Max Sum 解题报告
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...
- HDU 1421 搬寝室 解题报告(超详细)
**搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...
- hdu 2602 Bone Collector 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 在没学01背包时做的,很遗憾的是,wa了很多次. wa代码 1 #include <ios ...
- hdu 1102 pku 2421 解题报告
这题很简单,我差不多15分钟就写好代码了,运行结果也是正确的.可提交就是RE,百思不得其解,调了两个小时的时候,我才忽然发现我存边的时候数组开小了,我当时也想到肯定是数组问题,但是我却忽律了图的边不等 ...
- L - Oil Deposits HDU - 1241
L - Oil Deposits HDU - 1241 注意写check的时候要先判x,y是不是越界了,不然直接用数组可能RE, 也可能直接WA了 #include<cstdio> #in ...
- 【HDU - 1241】Oil Deposits (连通块问题 属于求大海中的岛屿个数 类似问题)
题干: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. G ...
- hdu 2049 不容易系列之(4)——考新郎 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 写这篇解题报告时 我真的很气愤 对自己又一次犯下低级错误改了两个小时 int型的数据居然用%I6 ...
- hdu 2058 解题报告 - The sum problem
hdu 2058 解题报告 - The sum problem 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2058 等差求和公式: Sn=(a1+aN ...
最新文章
- 面试题16: 数值的整数次方
- Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程...
- kudu导出为mysql格式_怎么实现kudu表数据的导入导出
- (转)构建微服务:Spring boot 入门篇
- 300+Jquery, CSS, MooTools 和 JS的导航菜单资源
- Django 3.0 正式发布,开始支持异步功能
- MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
- 评分模型的监控报表汇总
- Macro版Property Generator辅助工具
- 图神经网络:Graph Neural Networks
- winform c# chart控件添加边界值线条以及扩展性功能
- 【C语言】充当右值时,数组名前加不加的区别
- ptaa乘以b_PTA-多项式A除以B
- onlyoffice 收费不_OMG!你家小区物业有没有这些乱收费的现象……|物业|物业管理|物业服务|门禁卡|停车费...
- #程序员健康 如何解救你的鼠标手
- 为什么看P1dB压缩,而不是2dB,3dB压缩
- Linux第七章服务器硬件及RAID配置实战
- 还不明白什么是固件吗
- 拍照翻译的软件有什么?不妨试试这几款好用的软件
- 大数据三种主流架构(Lambda、Kappa、IOTA)
热门文章
- LeetCode 5268. 找出两数组的不同(set)
- LeetCode 1638. 统计只差一个字符的子串数目(DP)
- LeetCode 921. 使括号有效的最少添加(栈)
- LeetCode 650. 只有两个键的键盘(DP)
- 算法--递归--走台阶问题(2种递归+递归改循环)
- java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
- 往java里输入坐标值_java.让用户输入x坐标,和y坐标。当用户输入完x坐标(比如200),敲enter,...
- oracle+资料类型不一致吗,oracle数据库中,字段类型不一致,导致查询慢
- 随机森林-集成学习方法(分类)
- 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估