I have tried all the test inputs I found here and everything seems to be working fine but I still get WA. Can anyone help me pinpoint the problem?
Here is my code:
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#define MINE '*'
int countMines(int x, int y, int w, int h);
char grid[105][105] = {'\0'};
int main()
{
int w, h, i, j, nField = 1;
while(scanf("%d %d\r", &h, &w) != EOF && w != 0 && h != 0) {
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
scanf("%c\r", &grid[i][j]);
}
}
if (nField > 1) printf("\n\n");
printf("Field #%d:\n", nField++);
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
if (grid[i][j] == MINE) {
printf("*");
} else {
printf("%d", countMines(j, i, w, h));
}
}
printf("\n");
}
}
return 0;
}
int countMines(int x, int y, int w, int h)
{
int i, n = 0;
int coord[8][2] = {
{y - 1, x - 1},
{y - 1, x},
{y - 1, x + 1},
{y, x - 1},
{y, x + 1},
{y + 1, x - 1},
{y + 1, x},
{y + 1, x + 1},
};
for (i = 0; i < 8; ++i) {
if ((coord[i][0] >= 0 && coord[i][0] < h) && (coord[i][1] >= 0 && coord[i][1] < w)) {
if (grid[coord[i][0]][coord[i][1]] == MINE) {
++n;
}
}
}
return n;
}
Thanks :p