扫雷
这道题第一眼看去还以为是搜索。后来发现我想太多了。就是个简单的模拟,但是格式很头疼,,PE了一下午。
计算每个'.'的周围有多少个地雷,然后输出。
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int x[8] = {0,1,0,-1,1,-1,-1,1}; int y[8] = {1,0,-1,0,-1,1,-1,1}; char str[110][110]; int n,m; int countt(int x1,int y1){ int s = 0; for(int i = 0;i < 8;i++){ int xx = x1 + x[i]; int yy = y1 + y[i]; if(xx < 0 || xx >= n || yy < 0 || yy >= m)continue; else if(str[xx][yy] == '*') s++; } return s; } int main(){ int num = 0; while(~scanf("%d%d",&n,&m),(n && m)){ num++; for(int i = 0;i < n;i++) scanf("%s",str[i]); if(num > 1)cout<<endl; printf("Field #%d:\n",num); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(str[i][j] == '*')printf("*"); else{ int cnt = countt(i,j); printf("%d",cnt); } } printf("\n"); } } return 0; }