这是代码:
#include<stdio.h>
char a[2002][2002];
int main(void)
{
int i, k, m, n;
scanf("%d %d", &n, &m);
//读取地雷分布图
for(i = 1; i<=n; i++)
for(k = 1; k<=m; k++)
{
scanf("%c", &a[i][k]);
if(a[i][k] == '\n')
scanf("%c", &a[i][k]);
}
//所有非雷区化为0
for(i = 1; i<=n; i++)
for(k = 1; k<=m; k++)
{
if(a[i][k] !='*')
a[i][k] = '0';
}
//扫描雷区
for(i = 1; i<=n; i++){
for(k = 1; k<=m; k++)
{
if(a[i][k] !='*')
{
a[i][k]+=(a[i-1][k-1] == '*')
+(a[i-1][k] == '*')
+(a[i-1][k+1] =='*')
+(a[i][k-1] == '*')
+(a[i][k+1] =='*')
+(a[i+1][k-1] == '*')
+(a[i+1][k] == '*')
+(a[i+1][k+1] == '*');
}
printf("%c",a[i][k]);
}
printf("\n");
}
return 0;
}
程序运行时间有点长,各位大神有没有更简单的算法哦?