只需建立一個字元陣列 char 並且讀取範圍還有內容,C 語言程式碼如下:
char field[102][102];
for (i = 0; i < n; i ++)
scanf("%s", field[i]);
再來判斷每一個「.」周圍有幾顆地雷,最後印出。C 語言程式碼如下:
for (i = 0; i < n; i ++)
{
for (j = 0; j < m; j ++)
{
if (field[i][j] == '*') continue;
else
{
int count = 0;
/* 上方 */
if (i != 0 && field[i - 1][j] == '*') count ++;
/* 下方 */
if (i != n - 1 && field[i + 1][j] == '*') count ++;
/* 左方 */
if (j != 0 && field[i][j - 1] == '*') count ++;
/* 右方 */
if (j != m - 1 && field[i][j + 1] == '*') count ++;
/* 左上 */
if (i != 0 && j != 0 && field[i - 1][j - 1] == '*') count ++;
/* 右上 */
if (i != 0 && j != m - 1 && field[i - 1][j + 1] == '*') count ++;
/* 左下 */
if (i != n - 1 && j != 0 && field[i + 1][j - 1] == '*') count ++;
/* 右下 */
if (i != n - 1 && j != m - 1 && field[i + 1][j + 1] == '*') count ++;
field[i][j] = count + '0';
}
}
}
printf("Field #%d:\n", caseNum ++);
for (i = 0; i < n; i ++)
printf("%s\n", field[i]);
By David.K
p10189題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言