题目链接: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 解题报告相关推荐

  1. HDU 1241 Oil Deposits

    题目大意是找到独立的油田个数,所谓独立就是跟它相邻的八个方向上都不能再有别的油田.思路就是每遇到一个'@'都要将它周围的所有'@'都给改成'*',用DFS跟BFS都可以,这里是DFS的代码: AC c ...

  2. hdu 1003 Max Sum 解题报告

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...

  3. HDU 1421 搬寝室 解题报告(超详细)

    **搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...

  4. hdu 2602 Bone Collector 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 在没学01背包时做的,很遗憾的是,wa了很多次. wa代码 1 #include <ios ...

  5. hdu 1102 pku 2421 解题报告

    这题很简单,我差不多15分钟就写好代码了,运行结果也是正确的.可提交就是RE,百思不得其解,调了两个小时的时候,我才忽然发现我存边的时候数组开小了,我当时也想到肯定是数组问题,但是我却忽律了图的边不等 ...

  6. L - Oil Deposits HDU - 1241

    L - Oil Deposits HDU - 1241 注意写check的时候要先判x,y是不是越界了,不然直接用数组可能RE, 也可能直接WA了 #include<cstdio> #in ...

  7. 【HDU - 1241】Oil Deposits (连通块问题 属于求大海中的岛屿个数 类似问题)

    题干: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. G ...

  8. hdu 2049 不容易系列之(4)——考新郎 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 写这篇解题报告时 我真的很气愤 对自己又一次犯下低级错误改了两个小时 int型的数据居然用%I6 ...

  9. hdu 2058 解题报告 - The sum problem

    hdu 2058 解题报告 - The sum problem 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2058 等差求和公式: Sn=(a1+aN ...

最新文章

  1. 面试题16: 数值的整数次方
  2. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程...
  3. kudu导出为mysql格式_怎么实现kudu表数据的导入导出
  4. (转)构建微服务:Spring boot 入门篇
  5. 300+Jquery, CSS, MooTools 和 JS的导航菜单资源
  6. Django 3.0 正式发布,开始支持异步功能
  7. MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
  8. 评分模型的监控报表汇总
  9. Macro版Property Generator辅助工具
  10. 图神经网络:Graph Neural Networks
  11. winform c# chart控件添加边界值线条以及扩展性功能
  12. 【C语言】充当右值时,数组名前加不加的区别
  13. ptaa乘以b_PTA-多项式A除以B
  14. onlyoffice 收费不_OMG!你家小区物业有没有这些乱收费的现象……|物业|物业管理|物业服务|门禁卡|停车费...
  15. #程序员健康 如何解救你的鼠标手
  16. 为什么看P1dB压缩,而不是2dB,3dB压缩
  17. Linux第七章服务器硬件及RAID配置实战
  18. 还不明白什么是固件吗
  19. 拍照翻译的软件有什么?不妨试试这几款好用的软件
  20. 大数据三种主流架构(Lambda、Kappa、IOTA)

热门文章

  1. LeetCode 5268. 找出两数组的不同(set)
  2. LeetCode 1638. 统计只差一个字符的子串数目(DP)
  3. LeetCode 921. 使括号有效的最少添加(栈)
  4. LeetCode 650. 只有两个键的键盘(DP)
  5. 算法--递归--走台阶问题(2种递归+递归改循环)
  6. java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
  7. 往java里输入坐标值_java.让用户输入x坐标,和y坐标。当用户输入完x坐标(比如200),敲enter,...
  8. oracle+资料类型不一致吗,oracle数据库中,字段类型不一致,导致查询慢
  9. 随机森林-集成学习方法(分类)
  10. 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估