10189 - Minesweeper

#include<stdio.h>
#include<string.h>
int X[8]= {1,1,0,-1,-1,-1,0,1};
int Y[8]= {0,1,1,1,0,-1,-1,-1};
int main()
{
    char mat[101][101];
    int R,C,i,j,k,x,y,count=0,count1=0;
    while(scanf("%d%d",&R,&C)&&R&&C)
    {
        count++;
        memset(mat,'0',sizeof(mat));
        for(i=0; i<R; i++)
        {
            getchar();
            for(j=0; j<C; j++)
            {
                scanf("%c",&mat[i][j]);
            }
        }
        for(i=0; i<R; i++)
        {
            for(j=0; j<C; j++)
            {
                if(mat[i][j]=='.')
                {
                    mat[i][j]='0';
                }
            }
        }
        for(i=0; i<R; i++)
        {
            for(j=0; j<C; j++)
            {
                if(mat[i][j]=='*')
                {
                    for(k=0; k<8; k++)
                    {
                        x=i+X[k];
                        y=j+Y[k];
                        if((x>=0&&x<R)&&(y>=0&&y<C))
                        {
                            if(mat[x][y]!='*')
                            {
                                mat[x][y]=(mat[x][y])+1;
                            }
                        }
                    }
                }
            }
        }
        if(count1==1)
        {
            printf("\n");
        }
        count1=1;
        printf("Field #%d:\n",count);
        for(i=0; i<R; i++)
        {
            for(j=0; j<C; j++)
            {
                printf("%c",mat[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}

0 comments: (+add yours?)