2110: 扫雷
http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=2110
2110: 掃雷
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?88??Solved:?36
[Submit][Status][Web Board]
Description
掃雷游戲你一定玩過吧!現(xiàn)在給你若干個(gè)n×m的地雷陣,請(qǐng)你計(jì)算出每個(gè)矩陣中每個(gè)單元格相鄰單元格內(nèi)地雷的個(gè)數(shù),每個(gè)單元格最多有8個(gè)相鄰的單元格。 0<n,m<=100
?
Input
輸入包含若干個(gè)矩陣,對(duì)于每個(gè)矩陣,第一行包含兩個(gè)整數(shù)n和m,分別表示這個(gè)矩陣的行數(shù)和列數(shù)。接下來n行每行包含m個(gè)字符。安全區(qū)域用‘.’表示,有地雷區(qū)域用'*'表示。當(dāng)n=m=0時(shí)輸入結(jié)束。
?
Output
對(duì)于第i個(gè)矩陣,首先在單獨(dú)的一行里打印序號(hào):“Field #i:”,接下來的n行中,讀入的'.'應(yīng)被該位置周圍的地雷數(shù)所代替。輸出的每?jī)蓚€(gè)矩陣必須用一個(gè)空行隔開。
?
Sample Input
4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0Sample Output
Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100HINT
?
?(注意兩個(gè)矩陣之間應(yīng)該有一個(gè)空行,由于oj的格式化這里不能顯示出來)
數(shù)據(jù)規(guī)模和約定
0<n,m<=100
?
Source
算法提高
?
【代碼】:
#include <iostream> #include<cstdio> #include<cstring> using namespace std;int main() {int n,m;int cha[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{-1,1},{1,-1},{1,1}};char a[105][105];int cas=1;while(~scanf("%d%d",&n,&m),n&&m){memset(a,0,sizeof(a));for(int i=0;i<n;i++)scanf("%s",a[i]);for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(a[i][j] != '*'){a[i][j]='0'; //不是地雷的標(biāo)記為0for(int k=0;k<8;k++) //八方向搜索 {int x=i+cha[k][0];int y=j+cha[k][1];if(a[x][y]=='*') //8方向只要有為雷a[i][j]++; //該坐標(biāo)雷數(shù)++ }}}}printf("Field #%d:\n",cas++);for(int i=0;i<n;i++)printf("%s\n",a[i]);cout<<endl;}return 0; } View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/Roni-i/p/8786572.html
總結(jié)
- 上一篇: 语文片断教学优秀教案一等奖
- 下一篇: 青椒苗