http://codeforces.com/gym/102021/attachments
扫雷游戏,从左上顶点开始:一个点a[i][j]=1,那么a[i+1][j+1]一定是雷,然后把周围9个点都-1;
最后遍历一遍,全是0就输出雷的排列,否则输出impossible
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
// freopen("1.txt","r",stdin);
int m,n;
cin>>m>>n;
int zu[105][105];
for(int i=1; i<=m+2; i++)
for(int j=1; j<=n+2; j++)
cin>>zu[i][j];
char zu1[105][105];
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(zu[i][j]>=1) zu1[i][j]='X';
else zu1[i][j]='.';
if(zu[i][j]>=1)
{
// cout<<"new1 ";
zu[i][j]--;
zu[i][j+1]--;
zu[i][j+2]--;
zu[i+1][j]--;
zu[i+1][j+1]--;
zu[i+1][j+2]--;
zu[i+2][j]--;
zu[i+2][j+1]--;
zu[i+2][j+2]--;
}
}
}
int flag=0;
for(int i=1;i<=m+2;i++)
{
for(int j=1;j<=n+2;j++)
{
if(zu[i][j]!=0)
{
flag=1;
break;
}
}
if(flag==1) break;
}
if(flag==1) cout<<"impossible"<<endl;
else
{
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cout<<zu1[i][j];
}
cout<<endl;
}
}
return 0;
}