admin 管理员组文章数量: 894188
A?H?
题目描述
目前图像识别是一项非常热门的技术,最流行莫不过是深度学习,识率甚至能达到 99\% 以上。当然,对于简单的图像来说深度学习是没有必要的。比如要识别安徽拼音首字母 A和H,就可以不用深度学习就可以判断。现在有一些只含 A或者H的图像,,你知道该如何识别吗?
输入
第一行输入 正整数 T,表示数据的组。每组数据中,第一行是两个正整n和 m,$n \le 100$,$m \le 100$,表示图像的大小。接下来有 n行 ,每行m个字符,只可能为 ‘.’ 或者 ‘#’ 。‘.’ 表示白色, ‘#’ 表示黑色。 ‘#’ 会通过上下左右或者连成一个区域,表示A或H字母。
数据保证字母在图像内 ,不会有缺失。数据保证图像里只含有A或者H,且除字母外无其它黑色区域。不存在空白 图像或者含有其它内容的数据。注意,字母不一定是正着的有可能斜横或者倒。特别提示:图像一定是白底黑字的,不会存在反色情况。
输出
对于每行数据, 输出 ‘Case t: X ’,X表示你所识别出来的字母
样例输入
1
3 6
######
..#.#.
...#..
样例输出
Case 1: A
题解
#include <iostream>
#include <cstring>using namespace std;
char a[500][500];
int n,m;
int nx[4]={0,0,1,-1};
int ny[4]={1,-1,0,0};
void dfs(int x,int y){a[x][y]='#';for (int k = 0; k <=3; k++) {int tx=x+nx[k];int ty=y+ny[k];if(tx<0 || tx>n+1 || ty<0 || ty>m+1 || a[tx][ty] =='#') continue;dfs(tx,ty);}
}
int main() {int T;cin>>T;int t=0;while (T--){t++;memset(a,'.', sizeof(a));cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}dfs(0,0);int flag=0;for(int i=0;i<=n+1;i++){for(int j=0;j<=m+1;j++){if (a[i][j]=='.'){flag=1;break;}}if(flag==1) break;}if(flag==1){cout<<"Case "<<t<<": A"<<endl;} else{cout<<"Case "<<t<<": H"<<endl;}}return 0;
}
相关
本文标签: AH
版权声明:本文标题:A?H? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687605345h120264.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论