poj 3923 模拟

来源:互联网 发布:ptc三维软件 编辑:程序博客网 时间:2024/06/13 23:52
/*1、判断是否是一个完整边框2、判断是否长度和宽度小于33、判断是否有内部覆盖的现象*/#include<stdio.h>#define N  110#define inf 0x3fffffffstruct 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;}

0 0
原创粉丝点击