博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度优先搜索之小z的房子与验证码识别
阅读量:6147 次
发布时间:2019-06-21

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

题目:小z的房子

高级语言程序设计实践题目:2.4 小z 的房子

★实验任务
小z 通过自己的努力,终于发家致富。现在小明有一个大小为N*M 的
院子,雨后积起了水。四联通的积水被认为是连接在一起的。请你帮
小z 计算出院子里有多少水洼。1 代表积水,0 代表没有积水。(四
联通指下面图中下对1 的部分)

*   *1*    *

★数据输入

输入数据共两行。
第一行为一个整数N,M(1<=N,M<=100)表示院子的大小。
接下来N 行M 列的矩阵表示院子中积水情况。
★数据输出
输出数据共一行,为水洼个数。
输入示例输出示例
5 5
00001
01101
01001
11101
11001
2
HINT:
可以百度学习下深度优先搜索。

代码:

#include
#include
using namespace std; char a[105][105];struct pla{ int x,y;};int tran[5][3]={
{-1,0},{1,0},{0,-1},{0,1}};int n,m;void DFS(int i,int j){ pla begin,between; begin.x=i; begin.y=j; stack
s; s.push(begin); a[begin.x][begin.y]='0';//turn 0; while(!s.empty()) { begin=s.top(); s.pop(); for(i=0;i<4;i++) { between.x=begin.x+tran[i][0]; between.y=begin.y+tran[i][1]; if(between.x>0 && between.x<=n && between.y>0 && between.y<=m && a[between.x][between.y]=='1') { //printf("1\n"); s.push(between); a[between.x][between.y]='0'; } } } }int main(){ int i,j,k,t=0,sum=0; scanf("%d%d",&n,&m); getchar(); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%c",&a[i][j]); } getchar(); } for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(a[i][j]=='1') { DFS(i,j); //printf("%d %d\n",i,j); sum++; } } } /*for(i=1;i<=n;i++) { for(j=1;j<=m;j++) printf("%c",a[i][j]); printf("\n"); }*/ printf("%d",sum); return 0;}

注意:这里的四联通指的是上下左右。

关于深度优先搜索,可以参考我的blog:
在理解完深度优先搜索以后相信此题不是什么难事。

练习:

题目:验证码识别(abc.cpp/c/pas)

【题目描述】

很久很久以前,百度贴吧的爆吧军团借助着爆吧机器和大批人手在各个贴吧里面替天行道!后来百度放出了养了很久的超级验证码,爆吧的效率便低了很多,爆吧军团从此一蹶不振。机智的Kiana,最近加入了沉寂很久的爆吧军团风纪社!他决定想要发明一个验证码识别器,重整风纪社的雄姿!
为了简化问题,我们的验证码为“A”,“B”,“C”字母中的一个,被画在一个n*m的矩阵中,0表示白色,1表示黑色(题目保证验证码是黑色的>_<,并且字母和边界不会相连0.0)。。但是由于百度君的丧心病狂,验证码是标准字体被进行了无数次的拉伸,缩放,旋转,压缩,翻转的操作,有可能会变得难以辨认。而作为Oier的你就是要编写一个程序辨认验证码。

【输入格式】

第1行:两个整数n、m,表示矩阵大小为n行m列
第2..n+1行:每行m个整数,0表示此点为白色,1表示此点为黑色。

【输出格式】

输出识别出来的验证码,为“A”,“B”,“C”中的一个。
【样例输入】
7 7
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 1 0 1 0 0
0 0 1 1 1 0 0
0 0 1 0 1 0 0
0 0 1 0 1 0 0
0 0 0 0 0 0 0
【样例输出】
A
【样例解释】
885822-20160312121135975-997747703.png

【数据范围】

10%的数据保证1<=n,m<=10且为标准的字体【就像样例一样的好看的字体哟!】
30%的数据保证1<=n,m<=100且字体并不是那么丧心病狂!
100%的数据保证1<=n,m<=1000

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

你可能感兴趣的文章
python - unitest - 实战题目
查看>>
SQL2005SP4补丁安装时错误: -2146233087 MSDTC 无法读取配置信息。。。错误代码1603的解决办法...
查看>>
【BZOJ1049】 [HAOI2006]数字序列
查看>>
powershell: 生成随机字符串
查看>>
性能优化之快速响应的用户界面
查看>>
模拟。。。 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C
查看>>
洛谷P5163 WD与地图
查看>>
如何自己制作iconfont
查看>>
结队开发5----首尾相连数组
查看>>
我的Android进阶之旅------>Android用AutoCompleteTextView实现搜索历史记录提示
查看>>
PDF 补丁丁 0.6.0.3383 版发布(修复书签编辑器坐标定位错误的问题)
查看>>
值保留原则
查看>>
c中perror函数
查看>>
使用Leangoo做销售管理系统
查看>>
css_css 盒子水平居中 垂直居中
查看>>
“浏览器模式”和“文档模式”之间的区别
查看>>
批量kill 某个用户session
查看>>
java中的异常处理机制_函数覆盖时的异常特点
查看>>
innerHTML,innerText,outHTML,outText区别
查看>>
微服务概念
查看>>