C语言扫雷
输入两个数字n, m。其中n代表一个n*n的棋盘,上面有m个雷。接下来的m组数据,分别表示x,y坐标。
输出时,雷所在位置以X
表示,附近雷区的位置是周围雷的数量。
这个题是XDU计算机学院的转专业的机考题,但是我当时不知道在想什么 ,居然没做出来,现在一想也没有什么难的。
#include<stdio.h>
int n;
void prt(int a[][n+2])
{
int i, j;
for(i = 1; i < n+1; i++)
{
for(j = 1; j < n+1 ;j++)
{
if(a[i][j] == -1) printf("X ");
else printf("%d ",a[i][j]);
}
printf("\n");
}
}
void set(int a[][n+2])
{
int i, j, x, y;
for(x = 1; x < n+1; x++)
{
for(y = 1; y < n+1; y++)
{
if(a[x][y] == -1)
{
for(i = -1; i <= 1; i++)
{
for(j = -1; j <= 1; j++)
{
if(a[x+i][y+j] != -1) a[x+i][y+j]++;
}
}
}
}
}
}
int main()
{
int m, x, y, i, j;
scanf("%d %d",&n, &m);
int a[n + 2][n + 2];
nemset(a, 0, sizeof(a));
while(m--)
{
scanf("%d %d", &x, &y);
a[x][y] = -1;
}
set(a);
prt(a);
return 0;
}