poj 2612 Mine Sweeper 简单模拟

来源:互联网 发布:泰坦尼克号电影知乎 编辑:程序博客网 时间:2024/06/14 04:43
//poj 2612//sep9#include <iostream>using namespace std;int n;int cnt[16][16];char mine[16][16];char touch[16][16];int dx[8]={-1,0,1,-1,1,-1,0,1};int dy[8]={1,1,1,0,0,-1,-1,-1};int main(){memset(cnt,0,sizeof(cnt));scanf("%d",&n);for(int i=0;i<n;++i)scanf("%s",mine[i]);for(int i=0;i<n;++i)scanf("%s",touch[i]);int blast=0;for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(mine[i][j]=='*'&&touch[i][j]=='x')blast=1;for(int k=0;k<8;++k){int nx=i+dx[k];int ny=j+dy[k];if(nx<n&&nx>=0&&ny<n&&ny>=0)cnt[i][j]+=mine[nx][ny]=='*';}}for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(blast==1&&mine[i][j]=='*')touch[i][j]='*';else if(touch[i][j]=='x')touch[i][j]=cnt[i][j]+'0';}for(int i=0;i<n;++i)puts(touch[i]);return 0;}

0 0