涉及算法:深度搜索

题目:

题目描述小新是个调皮的孩子,他总是会把衣服搞脏,他的妈妈美伢非常的生气,于是在《和妈妈的约定条款》加上了第三百七十七条:小新衣服上每有一块污渍妈妈就会打小新的小屁屁一下作为惩罚。我们规定如果两个污渍相邻(直接相邻的上下左右、左上、左下,右上、右下都算相邻)那么它们就算是一块污渍。现在小新又把衣服搞脏了,请你帮他算一算他的屁股上会挨几巴掌?输入输入将会包含多组测试数据,每组测试数据将会以m和n开头,表示将会用m行n列的网格代表小新的衣服,如果m=0输入结束;1 <= m <= 100 并且1 <= n <= 100.接下来是m行n列的网格,网格中’@’代表污渍,’*’代表没有污渍。输出对于每组数据,请输出小新屁股挨到的巴掌的数量。

样例输入

1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0

样例输出

0
1
2
2

大致搜索步骤:搜到一个是污渍后,标记上“已搜过”,紧接着搜它的周围,重复此步骤。遇到*后就停止,回到上一层。走到不能搜的点后跳过,搜完后也回到上一层。

注意:搜索前要判断该点是否越界,是否已搜过。

代码:

#include<stdio.h>
#include<string.h>
int color(int x, int y);
char map[101][101];
int res[101][101];
int direct[4]={-1,0,1};
int m,n;
int main(){
int flag;
int i,j;
while(scanf("%d%d",&m,&n)!=EOF){
getchar();
memset(map,0,sizeof(map));
memset(res,0,sizeof(res));
flag=0;
if (m==0) break;
for(i=0;i<m;i++){
gets(map[i]);
}for(i=0;i<m;i++)for(j=0;j<n;j++){if (res[i][j]!=0)continue;else{flag+=color(i,j);}}
printf("%d\n",flag);
}
return 0;
}
int color(int x, int y){
int i,j;if(map[x][y]=='*') return 0;
else{
res[x][y]=1;
for(i=0;i<3;i++)for(j=0;j<3;j++){if(x+direct[i]>=0 && x+direct[i]<m && y+direct[j]>=0 && y+direct[j]<n && (!res[x+direct[i]][y+direct[j]])){//注意逻辑取反!,而不是用位取反~color(x+direct[i],y+direct[j]);//上下左右检测的便捷写法,每种情况都要判断边界,判断是否已读
        }}}
return 1;
}

转载于:https://www.cnblogs.com/cnnnnnn/p/10080527.html

acm:屁屁上的巴掌相关推荐

  1. 小车屁屁,另一番天地

    小车屁屁,另一番天地 现在是彰显个性的年代.我的地盘我做主,许多小车一簇在自己的爱车后面印上了一段充满个性和创意的话,玄酷雷牛,千奇百味.<?xml:namespace prefix = o n ...

  2. 老虎的屁股摸不得,宝宝的屁屁一样碰不得!

    今天看到一篇文,现转过来分享给大家,说的是,宝宝的屁屁,包括但不限于,宝宝的哪里都打不得哦! 近日美国研究人员发现,打孩童屁股或是其他的体罚方式,可能阻碍孩童智商发展.美国惩戒与家庭暴力专家对1510 ...

  3. acm国际大学上计算机竞赛,ACM国际大学生程序设计竞赛

    ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由美国计算机协会(ACM) ...

  4. ACM训练史上最详细计划(大神养成记)

    看完人家的博客,发现任重道远... 一位高手对我的建议: 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debu ...

  5. The ACM Publishing System (TAPS) ACM出版系统上传文章 操作流程

    引言 当我们的文章被录用后,如果你的期刊或者会议是被ACM收录的,就要自行上传文件了.在此记录下它的操作流程,因为有点复杂,摸索了很久,在此仅说明使用word文档的上传流程.如果使用Latex模板,可 ...

  6. acm国际大学上计算机竞赛,2018年ACM国际大学生程序设计竞赛校内选拔赛报名通知...

    2018年ACM国际大学生程序设计竞赛校内选拔赛报名通知 我校自2002年开始举办ACM国际大学生程序设计竞赛校内选拔赛,吸引了大量喜爱程序设计和算法的同学积极参与.本项赛事参照ACM国际大学生程序设 ...

  7. ACM论文格式上常见的一些错误

    2019独角兽企业重金招聘Python工程师标准>>> 初次跟acm@sheridanprinting.com出版社打交道,虽然很多东西都是按他们的要求来的,但还会忽略掉一些问题,不 ...

  8. ACM训练计划(上)

    一.基本算法:      (1)枚举.(poj1753,poj2965)      (2)贪心.(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推 ...

  9. ACM基础——OJ上的Java代码提交规范

    1.输入 Scanner cin = new Scanner(System.in); while(cin.hasNext()){int a = cin.nextInt();int b = cin.ne ...

最新文章

  1. TensorFlow 实现分类操作的函数学习
  2. The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber
  3. finishBeanFactoryInitialization 处理预实例化Bean
  4. 2.2 KNN算法实现
  5. spark编译错误解决 Error:(52, 75) not found: value TCLIService
  6. 如何控制if跳出_Wasm介绍之5:控制指令 | 火星技术帖
  7. excel多元线性拟合_急!!!用excel做的多元线性回归分析~|excle做三元回归
  8. 攻击机靶机环境搭建——网络设置
  9. python 圆周率_圆周率 python
  10. 数据处理(1.2)-python 正则表达式-量词与贪婪
  11. HDU5713 K个联通块
  12. kafka sasl_ssl配置
  13. Android使用百度地图定位SDK在wifi下位置偏差
  14. Unity中国象棋(二)——走棋
  15. Java 实现抽奖的两种方式
  16. H5浏览器下无插件、低延时、RTSP视频流直播
  17. SSH登陆,用XShell
  18. 5G-NR通信标准介绍
  19. H3C acl配置举例
  20. uniapp下页面布局分析三——元素垂直居中

热门文章

  1. CSS层叠样式表-属性 /盒子模型
  2. stata绘制roc曲线_绘制ROC曲线、找截断值,教你两种软件操作方法!
  3. 【组成原理-指令】指令系统
  4. 在windows下烧写嵌入式linux镜像sdcard.img到sd卡
  5. 解决[服务器证书无效, 连接伪装服务器]问题
  6. Java的“泛型”特性,你以为自己会了?(万字长文)
  7. services - Internet 网络服务列表
  8. SQL常见面试题目与答案整理
  9. 推荐:优盘安装系统工具-大白菜
  10. PyQt5(五)信号与槽机制