july » 日志 » 1862 zoj
1862 zoj
july 发表于 2008-12-31 21:34:45
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1862
#include <iostream>
using namespace std;
int main()
{
char a[11][11],b[11][11],c[11][11];
int i,j,n,touchmine,mines,m,k,cases=0;
while(cin>>n)
{
if(cases++) printf("\n");
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>a[i][j];
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>b[i][j];
touchmine=0;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
mines=0;
if(b[i][j]=='x')
{
for(m=i-1,k=j-1;k<=j+1;++k)
if(m>=1&&k>=1&&k<=n)
if(a[m][k]=='*')
mines++;
m=i;
if((k=j-1)>=1) /*"k=j-1"加了括号才ac了... 比较运算符的优先级比赋值运算符高!!*/
if(a[m][k]=='*')
mines++;
if((k=j+1)<=n)
if(a[m][k]=='*')
mines++;
for(m=i+1,k=j-1;k<=j+1;++k)
if(m<=n&&k>=1&&k<=n)
if(a[m][k]=='*')
mines++;
c[i][j]=mines+48;
}
else
c[i][j]='.';
if(a[i][j]=='*'&&b[i][j]=='x') /*判断有没有踩雷*/
touchmine=1;
}
if(touchmine)
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(a[i][j]=='*')
c[i][j]='*';
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
cout<<c[i][j];
cout<<endl;
}
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
char a[11][11],b[11][11],c[11][11];
int i,j,n,touchmine,mines,m,k,cases=0;
while(cin>>n)
{
if(cases++) printf("\n");
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>a[i][j];
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>b[i][j];
touchmine=0;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
mines=0;
if(b[i][j]=='x')
{
for(m=i-1,k=j-1;k<=j+1;++k)
if(m>=1&&k>=1&&k<=n)
if(a[m][k]=='*')
mines++;
m=i;
if((k=j-1)>=1) /*"k=j-1"加了括号才ac了... 比较运算符的优先级比赋值运算符高!!*/
if(a[m][k]=='*')
mines++;
if((k=j+1)<=n)
if(a[m][k]=='*')
mines++;
for(m=i+1,k=j-1;k<=j+1;++k)
if(m<=n&&k>=1&&k<=n)
if(a[m][k]=='*')
mines++;
c[i][j]=mines+48;
}
else
c[i][j]='.';
if(a[i][j]=='*'&&b[i][j]=='x') /*判断有没有踩雷*/
touchmine=1;
}
if(touchmine)
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(a[i][j]=='*')
c[i][j]='*';
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
cout<<c[i][j];
cout<<endl;
}
}
return 0;
}
收藏:
QQ书签
del.icio.us
