noi 14:掃雷遊戲地雷數計算
阿新 • • 發佈:2019-01-23
14:掃雷遊戲地雷數計算
- 總時間限制:
- 1000ms
- 記憶體限制:
- 65536kB
- 描述
-
掃雷遊戲是一款十分經典的單機小遊戲。它的精髓在於,通過已翻開格子所提示的周圍格地雷數,來判斷未翻開格子裡是否是地雷。
現在給出n行m列的雷區中的地雷分佈,要求計算出每個非地雷格的周圍格地雷數。
注:每個格子周圍格有八個:上、下、左、右、左上、右上、左下、右下。
- 輸入
- 第一行包含兩個整數n和m,分別表示雷區的行數和列數。1 <= n <= 100, 1 <= m <= 100。
接下來n行,每行m個字元,‘*’表示相應格子中是地雷,‘?’表示相應格子中無地雷。字元之間無任何分隔符。 - 輸出
- n行,每行m個字元,描述整個雷區。若相應格中是地雷,則用‘*’表示,否則用相應的周圍格地雷數表示。字元之間無任何分隔符。
- 樣例輸入
-
3 3 *?? ??? ?*?
- 樣例輸出
-
*10 221 1*1
- 檢視
- 提交
- 統計
- 提問
-
- 程式碼:
#include<cstdio> int s[101][101]={0}; char a[101][101],b; int main(){ int n,m,i,j,i1,i2,j1,j2; scanf("%d%d",&n,&m); scanf("%c",&b); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ scanf("%c",&a[i][j]); if(a[i][j]=='*'){ i1=i-1;i2=i+1;j1=j-1;j2=j+1; s[i1][j1]++; s[i1][j2]++; s[i1][j]++; s[i2][j1]++; s[i2][j2]++; s[i2][j]++; s[i][j1]++; s[i][j2]++; } } scanf("%c",&b); } for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(a[i][j]=='*') printf("%c",a[i][j]); else printf("%d",s[i][j]); } putchar('\n'); } return 0; }