10279 - Mine Sweeper

#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};
char mat[11][11];
char mat1[11][11];
char mat2[11][11];
int i,j,k,l,x,y,count;
char output(int R,int i,int j)
{
    count=0;
    for(k=0; k<8; k++)
    {
        x=i+X[k];
        y=j+Y[k];
        if((x>=0&&x<R)&&(y>=0&&y<R))
        {
            if(mat[x][y]=='*')
            {
                count++;
            }
        }
    }
    return count+48;
}
int main()
{
    int R,t,m,check=0;
    scanf("%d",&t);
    getchar();
    for(m=1; m<=t; m++)
    {
        if(check==1)
        {
            printf("\n");
        }
        scanf("%d",&R);
        for(i=0; i<R; i++)
        {
            getchar();
            for(j=0; j<R; j++)
            {
                scanf("%c",&mat[i][j]);
            }
        }
        for(i=0; i<R; i++)
        {
            getchar();
            for(j=0; j<R; j++)
            {
                scanf("%c",&mat1[i][j]);
            }
        }
        memset(mat2,'.',sizeof(mat2));
        for(i=0; i<R; i++)
        {
            for(j=0; j<R; j++)
            {
                if(mat[i][j]=='.'&&mat1[i][j]=='x')
                {
                    mat2[i][j]=output(R,i,j);
                }
                if(mat[i][j]=='*'&&mat1[i][j]=='x')
                {
                    for(k=0; k<R; k++)
                    {
                        for(l=0; l<R; l++)
                        {
                            if(mat[k][l]=='*')
                            {
                                mat2[k][l]='*';
                            }
                        }
                    }
                }
            }
        }
        for(i=0; i<R; i++)
        {
            for(j=0; j<R; j++)
            {
                printf("%c",mat2[i][j]);
            }
            printf("\n");
        }
        check=1;
    }
    return 0;
}

0 comments: (+add yours?)