#include<cstdio>
using namespace std;
int n = 0 , m = 0;
int ans = 0;
int main()
{
scanf("%d%d",&n,&m);
char excel[n][m];
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < m ; j++)
{
scanf("%c",&excel[i][j]);
}
}
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < m ; j++)
{
if (excel[i][j] == '*')
{
printf("*");
continue;
}
if (i-1 != -1)
{
if (excel[i-1][j] == '*') ans++;
}
if (i-1 != -1 && j-1 != -1)
{
if (excel[i-1][j-1] == '*') ans++;
}
if (j-1 != -1)
{
if (excel[i][j-1] == '*') ans++;
}
if (j-1 != -1 && i+1 != n)
{
if (excel[i+1][j-1] == '*') ans++;
}
if (i+1 != n)
{
if (excel[i+1][j] == '*') ans++;
}
if (i+1 != n && j+1 != m)
{
if (excel[i+1][j+1] == '*') ans++;
}
if (j+1 != m)
{
if (excel[i][j+1] == '*') ans++;
}
if (i-1 != -1 && j+1 != m)
{
if (excel[i-1][j+1] == '*') ans++;
}
printf("%d",ans);
ans = 0;
}
printf("\n");
}
return 0;
}

洛谷P2670 样例过不了,1AC
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Sirius·Black 2022-08-06 11:59关注
#include<iostream> using namespace std; int main() { char a[105][105]; int b[105][105],n,m,i,j;//数组定义(二维) cin>>n>>m;//读入行、列 for(i=1;i<105;i++) for(j=1;j<105;j++) b[i][j]=0;//给数组赋值为0 for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>a[i][j]; if(a[i][j]=='*')//判断:如果是地雷 { b[i+1][j+1]++; b[i+1][j-1]++; b[i+1][j]++; b[i][j+1]++; b[i][j-1]++; b[i-1][j]++; b[i-1][j+1]++; b[i-1][j-1]++;//相邻的八个格子都+1 } } for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(a[i][j]=='*') cout<<"*";//如果是地雷(*) 原样输出 else cout<<b[i][j];//否则输出数字 } cout<<endl; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用