acm:屁屁上的巴掌
涉及算法:深度搜索
题目:
题目描述小新是个调皮的孩子,他总是会把衣服搞脏,他的妈妈美伢非常的生气,于是在《和妈妈的约定条款》加上了第三百七十七条:小新衣服上每有一块污渍妈妈就会打小新的小屁屁一下作为惩罚。我们规定如果两个污渍相邻(直接相邻的上下左右、左上、左下,右上、右下都算相邻)那么它们就算是一块污渍。现在小新又把衣服搞脏了,请你帮他算一算他的屁股上会挨几巴掌?输入输入将会包含多组测试数据,每组测试数据将会以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:屁屁上的巴掌相关推荐
- 小车屁屁,另一番天地
小车屁屁,另一番天地 现在是彰显个性的年代.我的地盘我做主,许多小车一簇在自己的爱车后面印上了一段充满个性和创意的话,玄酷雷牛,千奇百味.<?xml:namespace prefix = o n ...
- 老虎的屁股摸不得,宝宝的屁屁一样碰不得!
今天看到一篇文,现转过来分享给大家,说的是,宝宝的屁屁,包括但不限于,宝宝的哪里都打不得哦! 近日美国研究人员发现,打孩童屁股或是其他的体罚方式,可能阻碍孩童智商发展.美国惩戒与家庭暴力专家对1510 ...
- acm国际大学上计算机竞赛,ACM国际大学生程序设计竞赛
ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由美国计算机协会(ACM) ...
- ACM训练史上最详细计划(大神养成记)
看完人家的博客,发现任重道远... 一位高手对我的建议: 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debu ...
- The ACM Publishing System (TAPS) ACM出版系统上传文章 操作流程
引言 当我们的文章被录用后,如果你的期刊或者会议是被ACM收录的,就要自行上传文件了.在此记录下它的操作流程,因为有点复杂,摸索了很久,在此仅说明使用word文档的上传流程.如果使用Latex模板,可 ...
- acm国际大学上计算机竞赛,2018年ACM国际大学生程序设计竞赛校内选拔赛报名通知...
2018年ACM国际大学生程序设计竞赛校内选拔赛报名通知 我校自2002年开始举办ACM国际大学生程序设计竞赛校内选拔赛,吸引了大量喜爱程序设计和算法的同学积极参与.本项赛事参照ACM国际大学生程序设 ...
- ACM论文格式上常见的一些错误
2019独角兽企业重金招聘Python工程师标准>>> 初次跟acm@sheridanprinting.com出版社打交道,虽然很多东西都是按他们的要求来的,但还会忽略掉一些问题,不 ...
- ACM训练计划(上)
一.基本算法: (1)枚举.(poj1753,poj2965) (2)贪心.(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推 ...
- ACM基础——OJ上的Java代码提交规范
1.输入 Scanner cin = new Scanner(System.in); while(cin.hasNext()){int a = cin.nextInt();int b = cin.ne ...
最新文章
- TensorFlow 实现分类操作的函数学习
- The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber
- finishBeanFactoryInitialization 处理预实例化Bean
- 2.2 KNN算法实现
- spark编译错误解决 Error:(52, 75) not found: value TCLIService
- 如何控制if跳出_Wasm介绍之5:控制指令 | 火星技术帖
- excel多元线性拟合_急!!!用excel做的多元线性回归分析~|excle做三元回归
- 攻击机靶机环境搭建——网络设置
- python 圆周率_圆周率 python
- 数据处理(1.2)-python 正则表达式-量词与贪婪
- HDU5713 K个联通块
- kafka sasl_ssl配置
- Android使用百度地图定位SDK在wifi下位置偏差
- Unity中国象棋(二)——走棋
- Java 实现抽奖的两种方式
- H5浏览器下无插件、低延时、RTSP视频流直播
- SSH登陆,用XShell
- 5G-NR通信标准介绍
- H3C acl配置举例
- uniapp下页面布局分析三——元素垂直居中