hdu 2487 一道水题,ugly windows 写的相当乱

来源:互联网 发布:linux 统计文件夹行数 编辑:程序博客网 时间:2024/05/06 10:01

发现模拟题总是写的很凌乱,想到哪写到哪,写的最后发现有问题打补丁打的乱七八糟,

题目很水,我的方法是扫描到窗口的最上一行记下他的起始位置和结束位置,继续往下扫描,若是完整的窗口,中间每行都是X。。。。。X的形式,最后一行是xxxxx的形式,有个小trick,窗口嵌套要算里面的。

#include <iostream>#include<cstdio>#include <algorithm>using namespace std;char screen[200][200];int N,M;int beg,end,line;int find(char a){    int f1=0;    for (int i=0;i<=N;i++)    for (int j=0;j<=M;j++)    {        if(screen[i][j]==a&&f1==0)        beg=j,f1=1,line=i;        if(screen[i][j]!=a&&f1==1&&j>beg+1)        {             end=j-1;             return 1;        }    }    return 0;}bool judge(char a){    int i;    for (i=line+1;i<N;i++)    {        if(screen[i][beg]==a&&screen[i][end]==a)        {            if(screen[i][beg+1]==a)            {                if(i-line<2)                return 0;                    for (int j=beg;j<=end;j++)                    {                if(screen[i][j]!=a) return 0;                    }                    return 1;            }            else            for(int j=beg+1;j<end;j++)            if(screen[i][j]!='.') return 0;        }        else return 0;    }    return 0;} int main(){   //freopen("in.txt","r",stdin);   while(scanf("%d%d",&N,&M),N&&M)   {    for (int i=0;i<N;++i)    scanf("%s",screen[i]);    for (int i='A';i<='Z';++i)    {    if(find(i))    if(judge(i))    printf("%c",i);    }    printf("\n");   }    return 0;}


原创粉丝点击