zcmu-1176
1176: 掃雷
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?249??Solved:?101
[Submit][Status][Web Board]
Description
大家都應(yīng)該玩過(guò)掃雷這個(gè)游戲吧.就是在一個(gè)n*m的矩陣中有若干個(gè)雷,你需要將他們?nèi)空页鰜?lái)才能獲得勝利.其他格子用數(shù)字表示代表這個(gè)格子周圍有幾個(gè)雷.如果在一個(gè)n*m的矩陣中我已經(jīng)告訴你所有雷的位置,你能將這個(gè)矩陣補(bǔ)全嘛?
Input
多組測(cè)試數(shù)據(jù).每組數(shù)據(jù)的第一行包含兩個(gè)正整數(shù)n,m(1<=n,m<=100).接下來(lái)n行每行有m個(gè)不是9就是-1的整數(shù).9代表這個(gè)位置有雷,-1代表這個(gè)位置是數(shù)字.
Output
對(duì)于每組測(cè)試數(shù)據(jù)輸出一個(gè)n*m的補(bǔ)全后的矩陣.用一個(gè)空行分隔兩個(gè)矩陣.注意最有一個(gè)矩陣后面沒(méi)有空行.
Sample Input
2 39 -1 9-1 -1 92 49 -1 -1 -19 9 9 9Sample Output
93913994329999HINT
Source
分析:簡(jiǎn)單的bfs,直接對(duì)矩陣?yán)锊皇?的尋找它周圍是雷的數(shù)目,然后直接輸出。
坑點(diǎn):題目最后面說(shuō)“注意最有一個(gè)矩陣后面沒(méi)有空行”,我以為真的要弄一個(gè)什么標(biāo)記什么的去除最后一個(gè)矩陣的空行,但是第一次直接交就給過(guò)了,不知道題目說(shuō)這個(gè)有什么意思。
代碼;
#include<iostream> #include<cstdio> #include<algorithm> #define M 100+10 using namespace std;int a[M][M]; void bfs(int n,int m) {int z=0;for(int i=0; i<n; i++){for(int j=0; j<m; j++){z=0;if(a[i][j]==9)printf("9");else{for(int x=-1; x<2; x++)for(int y=-1; y<2; y++){int p=i+x;int q=j+y;if(p>=0&&p<n&&q>=0&&q<m){if(a[p][q]==9)z++;}}printf("%d",z);}}printf("\n");} } int main() {int n,m;while(~scanf("%d%d",&n,&m)){for(int i=0; i<n; i++)for(int j=0; j<m; j++)scanf("%d",&a[i][j]);bfs(n,m);printf("\n");}return 0; }
總結(jié)
- 上一篇: 大数据技术之 Kafka (第 3 章
- 下一篇: css中标签显示模式、块元素、行内元素、