问题 J: 扫雷1766
该题可以直接用暴力枚举实现,只不过可以对这些算法进行优化,使其更加简洁。
点击查看代码
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int k,i,j,s,p,q,t=0;
char a[11][11],b[11][11];
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%s",a[i]);
}
for(i=0;i<k;i++)
{
scanf("%s",b[i]);
}
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
if(a[i][j]=='*' && b[i][j]=='x')//踩雷了
{
t=1;
break;
}
}
}
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
if(b[i][j]=='x')
{
if(a[i][j]=='*' && t==1)
{
printf("*");
}
else
{
s=0;
p=i==0?0:i-1;
for(;p<=i+1 && p<k;p++)//对该元素周围的位置进行排查,注意不要数组越界哦
{
q=j==0?0:j-1;// j==0?0:j-1三目运算符如果j==0成立就返回0,即q=0,如果不成立那么就返回j-1,即q=j-1.
for(;q<=j+1 && q<k;q++)
{
if(a[p][q]=='*')
{
s++;
}
}
}
printf("%d",s);
}
}
else if(a[i][j]=='*' && t==1)
{
printf("*");
}
else
{
printf(".");
}
}
printf("\n");
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步