昨晚看了看,感觉还可以,就把这题写出来了,刚才交的的是WA了一次,原因是最后多了个空行。改了下空行出现的位置,AC了。不得不说UVA判的真严。
#include<stdio.h>
char s[10][10];
int  num[10][10];
int main()
{
    int  r, c, i, j, sign=1;
    while(scanf("%d", &r))
    {
        if(r==0)
            break;
        scanf("%d",&c);
        int count=0;
        for( i=0; i < r; i++)
            scanf("%s",s[i]);
        for( i=0; i<r; i++)
            for( j=0; j<c; j++)
            {
                if(i==0&&s[i][j]!='*')
                    num[i][j]=++count;
                else if((j==0&&s[i][j]!='*')||(s[i][j-1]=='*'&&s[i][j]!='*')||(s[i-1][j]=='*'&&s[i][j]!='*'))
                    num[i][j]=++count;
            }
        if(sign!=1)
            printf("\n");
        printf("puzzle #%d:\n",sign);
        printf("Across\n");
        for( i=0; i<r; i++)
            for( j=0; j<c; j++)
            {
                if( s[i][j]!='*')
                {
                    printf("%3d.",num[i][j]);
                    int n;
                    for( n=j; ; n++)
                    {
                        printf("%c",s[i][n]);
                        if(s[i][n+1]=='*'||n==c-1)
                            break;
                    }
                    printf("\n");
                    j=n;
                }
            }
        printf("Down\n");
        for( i=0; i<r; i++)
            for( j=0; j<c; j++)
            {
                int n;
                if(i==0&&s[i][j]!='*')
                {
                    printf("%3d.",num[i][j]);
                    for( n=i; ; n++)
                        {
                            printf("%c",s[n][j]);
                            if(s[n+1][j]=='*'||n==r-1)
                                break;
                        }
                    printf("\n");
                }
                if( s[i][j]!='*'&& s[i-1][j]=='*'&&i!=0)
                {
                    printf("%3d.",num[i][j]);
                        for( n=i; ; n++)
                        {
                            printf("%c",s[n][j]);
                            if(s[n+1][j]=='*'||n==r-1)
                                break;
                        }
                    printf("\n");
                }
            }
        sign++;
    }
    return 0;
}
                    
                
                
            
        
浙公网安备 33010602011771号