UVA - 10279
题目介绍:
扫雷,基本的判断。
AC代码:
#include<iostream>
#include<cstring>
using namespace std;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
int main(){
int t,Case=1;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
getchar();
char ss[15][15],que[15][15];
for(int i=0;i<n;i++)
cin.getline(ss[i],15);
for(int i=0;i<n;i++)
cin.getline(que[i],15);
int num[15][15]={0};
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<8;k++){
int x=i+dx[k];
int y=j+dy[k];
if(x<0||x>=n||y<0||y>=n)
continue;
if(ss[x][y]=='*')num[i][j]++;
}
}
}
if(Case++>1)cout<<endl;
int ok=0;
char ans[15][15];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(que[i][j]=='x'){
if(ss[i][j]=='*')ok=1;
else ans[i][j]='0'+num[i][j];
}
else ans[i][j]='.';
if(ok){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(ss[i][j]=='*')
ans[i][j]='*';
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
cout<<ans[i][j];
cout<<endl;
}
}
return 0;
}