PersonalCorpus 版 (精华区)

1148141 Big Guava ... 201 Accepted
0:00.460 416 2002/10/05 20:50:23.457


void main()
{
#ifndef ONLINE_JUDGE
    freopen("c:\\0acm\\uva\\i201","r",stdin);
    freopen("c:\\0acm\\uva\\o201","w",stdout);
#endif

    bool dl[10][10][10][10];
    char s[100];
    int i,j,k,m,n,a,b,sum[9],t=0;

    while (scanf("%d\n",&n)==1) {
        if (t>0) printf("\n**********************************\n\n");
        printf("Problem #%d\n\n",++t);
        scanf("%d\n",&m);
        memset(dl,0,sizeof(dl));
        memset(sum,0,sizeof(sum));
        for (i=0;i<m;i++) {
            gets(s);
            j=1;
            while (s[j]==' ') j++;
            sscanf(s+j,"%d",&a);
            while (s[j]!=' ') j++;
            while (s[j]==' ') j++;
            sscanf(s+j,"%d",&b);
            if (s[0]=='H') {
                dl[a][b][a][b+1]=true;
                dl[a][b+1][a][b]=true;
            } else {
                dl[b][a][b+1][a]=true;
                dl[b+1][a][b][a]=true;
            }
        }
        for (i=1;i<n;i++) for (j=1;j<n;j++)
            for (k=1;(k+i<=n)&&(k+j)<=n;k++) {
                for (a=0;a<k;a++)
                    if 
(!((dl[i+a][j][i+a+1][j])&&(dl[i][j+a][i][j+a+1])&&
                       
(dl[i+k-a][j+k][i+k-a-1][j+k])&&(dl[i+k][j+k-a][i+k][j+k-a-1])))
                       break;
                if (a==k) sum[k]++;
            }

        for (i=1;i<9;i++) if (sum[i]!=0) break;
        if (i==9) printf("No completed squares can be found.\n");
        else {
            for (i=1;i<9;i++) if (sum[i]!=0)
                printf("%d square (s) of size %d\n",sum[i],i);
        }
    }
}
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.711毫秒