• UVA 1419 Ugly Windows


    /*

      找出当前界面的 x,y 的左右坐标  枚举边界,并且判断界面内是否全为‘.’ 

    */

    #include<cstdio>

    #include<cstring>
    #include<algorithm>
    #define INF 1<<30
    using namespace std;
    char s[110][110];
    int aph[30],n,m,ln;




    int judge(int x)
    {
        int lx,ly,rx,ry;
        lx = ly = INF;
        rx = ry = -1;
        for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            if(s[i][j]==x+'A')
            {
                lx = min(lx,i);
                ly = min(ly,j);
                rx = max(rx,i);
                ry = max(ry,j);
            }
        }
        if(lx==INF||ly==INF||rx==-1||ry==-1||rx-lx<2||ry-ly<2)
        {
            return 0;
        }
        for(int i = lx; i <= rx; i++)
        if(s[i][ly]!=x+'A'||s[i][ry]!=x+'A')
        return 0;
        for(int i = ly; i <= ry; i++)
        if(s[lx][i]!=x+'A'||s[rx][i]!=x+'A')
        return 0;
        for(int i = lx+1; i < rx; i++)
        for(int j = ly+1; j < ry; j++)
        if(s[i][j]!='.')
        return 0;
        return 1;
    }
    int solve()
    {
        memset(aph,0,sizeof(aph));
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
                if(s[i][j]!='.')
                    aph[s[i][j]-'A']++;
        for(int i = 0; i < 26; i++)
        {
            if(!aph[i]) continue;
            if(judge(i))
            printf("%c",i+'A');
        }


    }


    int main()
    {
        while(scanf("%d%d",&n,&m)==2)
        {
            if(!n&&!m) break;
            for(int i = 0; i < n; i++)
                scanf("%s",&s[i]);
            solve();
            printf("\n");
        }
        return 0;
    }

  • 相关阅读:
    (转)LINUX CENTOS7下安装PYTHON
    (转)python的paramiko模块
    (转)Db2数据库一次生产故障详细记录---数据库坏页
    (转)性能调优和问题诊断最佳实践,第 1 部分
    (转)性能调优和问题诊断最佳实践,第 2 部分
    字符串
    html框架
    数组
    生成伪随机数
    控制语句和循环
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3014107.html
Copyright © 2020-2023  润新知