UVA232

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char a[12][12],d[110][12];
    int b[12][12];
    int r,c,con=0;
    while(~scanf("%d",&r))
    {
        memset(b,0,sizeof(b));
        memset(d,0,sizeof(d));
        if(r==0)
            break;
            con++;
        scanf("%d",&c);
        int x=0;
        for(int i=0; i<r; i++)
            scanf("%s%*c",a[i]);
        for(int i=0; i<r; i++)
            for(int j=0; j<c; j++)
            {
                if(a[i][j]!='*')
                {
                    if(i-1<0||j-1<0||b[i-1][j]==-1||b[i][j-1]==-1)
                        b[i][j]=++x;
                }
                else
                    b[i][j]=-1;
            }
        for(int i=0; i<r; i++)
        {
            for(int j=0; j<c; j++)
            {
                printf("%d ",b[i][j]);
            }
            printf("\n");
        }
        if(con>1)
        printf("\n");
        printf("puzzle #%d:\n",con);
        int flag=0;
        printf("Across\n");
        for(int i=0; i<r; i++)
        {
            for(int j=0; j<c; j++)
            {
                if((j-1<0||b[i][j-1]==-1)&&b[i][j]>0)
                {
                    if(b[i][j]>1)
                        printf("\n");
                    printf("%3d.",b[i][j]);
                    flag=1;
                }
                if(flag)
                {   if(a[i][j]!='*')
                    printf("%c",a[i][j]);
                }
            }
            flag=0;
        }
        printf("\n");
        flag=0;
        int p=0,q=0;
        printf("Down\n");
         for(int i=0; i<c; i++)
        {
            for(int j=0; j<r; j++)
            {
                if((j-1<0||b[j-1][i]==-1)&&b[j][i]!=-1)
                {  d[p][q]='\0';
                    p=b[j][i];
                    flag=1;
                    q=0;
                }
                if(flag)
                {   if(a[j][i]!='*')
                    d[p][q++]=a[j][i];
                }
            }
            flag=0;
        }
        for(int i=0;i<=x;i++)
            if(d[i][0])
            printf("%3d.%s\n",i,d[i]);
    }
    return 0;
}

 

posted on 2017-02-19 11:21  发牌员  阅读(132)  评论(0)    收藏  举报

导航