题意:
分析:
//AC CODE:
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
using namespace std;
int n,m,top;
char mapn[105][105];
struct Letter
{
char ch;
int x1,y1;
int x2,y2;
bool mark;
} le[30];
void work(int x,int y,int n)
{
int i,j;
bool flag1,flag2;
i=x;
j=y;
flag1=flag2=false;
while(true)
{
if(flag1==false&&flag2==false)
{
if(mapn[i][j]==mapn[i][j+1])
j++;
else
{
if(mapn[i][j]==mapn[i+1][j])
{
i++;
flag2=true;
}
else
{
le[n].mark=0;
break;
}
}
}
else if(flag1==false&&flag2==true)
{
if(mapn[i][j]==mapn[i+1][j])
{
i++;
}
else
{
if(mapn[i][j]==mapn[i][j-1])
{
le[n].x2=i;
le[n].y2=j;
if((le[n].x2-le[n].x1+1)<3 || (le[n].y2-le[n].y1+1)<3)
{
le[n].mark=0;
break;
}
j--;
flag1=true;
flag2=false;
}
else
{
le[n].mark=0;
break;
}
}
}
else if(flag1==true&&flag2==false)
{
if(mapn[i][j]==mapn[i][j-1])
{
j--;
}
else
{
if(mapn[i][j]==mapn[i-1][j])
{
i--;
flag1=true;
flag2=true;
}
else
{
le[n].mark=0;
break;
}
}
}
else
{
if(mapn[i][j]==mapn[i-1][j])
{
i--;
}
else
{
if(!(i==x&&j==y))
{
le[n].mark=0;
}
break;
}
}
}
}
int main()
{
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n==0&&m==0)
break;
getchar();
for(int i=0; i<30; i++)
le[i].mark=0;
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
scanf("%c",&mapn[i][j]);
}
getchar();
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(i+1<n&&j+1<m&&mapn[i][j]!='.')
if(mapn[i][j]==mapn[i][j+1] && mapn[i][j]==mapn[i+1][j])
{
top=mapn[i][j]-'A';
le[top].ch=mapn[i][j];
le[top].mark=1;
le[top].x1=i;
le[top].y1=j;
}
}
}
for(int i=0; i<30; i++)
{
if(le[i].mark==1)
work(le[i].x1,le[i].y1,i);
}
//
for(int i=0; i<30; i++)
{
if(le[i].mark==1)
for(int j=i+1;j<30;j++)
{
if(le[j].mark==1)
{//le[i].x1 le[i].y1 le[i].x2 le[i].y2
//le[j].x1 le[j].y1 le[j].x2 le[j].y2
if(le[i].x1<=le[j].x1&&le[i].y1<=le[j].y1&&le[i].x2>=le[j].x2&&le[i].y2>=le[j].y2)
le[i].mark=0;
if(le[i].x1>=le[j].x1&&le[i].y1>=le[j].y1&&le[i].x2<=le[j].x2&&le[i].y2<=le[j].y2)
le[j].mark=0;
}
}
}
//
for(int i=0; i<30; i++)
if(le[i].mark)
printf("%c",le[i].ch);
printf("\n");
}
return 0;
}