/*
1、判断是否是一个完整边框
2、判断是否长度和宽度小于3
3、判断是否有内部覆盖的现象
*/
#include<stdio.h>
#define N 110
#define inf 0x3fffffff
struct node {
int u,v;
}f[N*N],ee;
char s[N][N];
int n,m;
void judge() {
int minx,i,j,k,e,len,maxx,miny,maxy;
for(e=0;e<26;e++) {
len=0;
for(j=1;j<=n;j++)
for(k=1;k<=m;k++)
if(s[j][k]=='A'+e) {
ee.u=j;
ee.v=k;
f[len++]=ee;
}
if(len==0)continue;
minx=inf;maxx=0;miny=inf;maxy=0;
for(i=0;i<len;i++) {
if(f[i].u>maxx)
maxx=f[i].u;
if(f[i].u<minx)
minx=f[i].u;
if(f[i].v>maxy)
maxy=f[i].v;
if(f[i].v<miny)
miny=f[i].v;
}
if(maxx-minx<2)continue;//长度或者宽度小于三
if(maxy-miny<2)continue;
if(len!=(maxx-minx+maxy-miny)*2)//是否是一个完整边框
continue;
int flag=1;
for(i=minx+1;i<maxx;i++)
for(j=miny+1;j<maxy;j++)
if(s[i][j]!='.')
flag=0;//是否有内部覆盖现象
if(flag)
printf("%c",'A'+e);
}
}
int main() {
int i;
while(scanf("%d%d",&n,&m),n||m) {
for(i=1;i<=n;i++)
scanf("%s",s[i]+1);
judge();
printf("\n");
}
return 0;
}

最新文章

  1. Hibernate映射文件创建和删除触发器,存储过程等数据库对象
  2. Android开发中 Eclipse常忘记又需要的快捷键
  3. 在Eclipse中自定义类似syso的快捷代码模板
  4. Windows-008-VirtualBox 安装 Win7 前沿配置详解
  5. SQL:每年每月最高的两个温度
  6. python字典的常用操作方法
  7. The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemK:Kinds of Fuwas
  8. rcp命令
  9. JTable,TableModel,DefaultTableModel与AbstractTableModel的小结
  10. sql查询语句报错处理——ERROR: failed to find conversion function from unknown to text
  11. 计蒜客NOIP模拟赛(2) D1T2 表演艺术
  12. 学习windows编程 day3 之 设置当前的背景颜色
  13. 07装饰模式Decorator
  14. 你真的会使用Github吗?
  15. MetaMask/provider-engine-2-代码
  16. (网络流 模板 Edmonds-Karp)Drainage Ditches --POJ --1273
  17. Android Media (Audio) Framework 多媒体系统框架
  18. 操作dict时避免出现KeyError的几种方法
  19. python笔记11-多线程之Condition(条件变量)
  20. layui数据表格自定义每页条数limit

热门文章

  1. golang——随机数(math/rand包与crypto/rand包)
  2. swoole之 swoole_process 应用于TP框架
  3. Qt实现客户端与服务器消息发送
  4. 转 form表单中name和id区别
  5. 笔试题的各种trick
  6. [ CodeForces 1063 A ] Oh Those Palindromes
  7. UVM基础之---------uvm factory机制base
  8. CSS绝对定位模拟固定定位
  9. 15 AJAX
  10. day02 Python完结