老师的做法难度很大,看不懂
#include <iostream>
using namespace std;
int dx[]={1,0,-1,0,1,1,-1,-1};
int dy[]={0,1,0,-1,1,-1,1,-1};
const int N=110;
char c[N][N];
int a[N][N];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='*'){
for(int k=0;k<8;k++){
int nx=i+dx[k];
int ny=j+dy[k];
if(nx>=1 && nx<=n && ny>=1 && ny<=m && c[nx][ny]!='*'){
a[nx][ny]++;
}
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]=='*'){
cout<<"*";
}else{
cout<<a[i][j];
}
}
cout<<endl;
}
return 0;
}
我的做法难度很小,轻松看懂
#include <iostream>
using namespace std;
long long int li[10001][10001];
int main(){
long long int n,m;
char a;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a;
if(a=='*'){
li[i][j]=10;
}else{
li[i][j]=0;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(li[i][j]==10){
continue;
}else{
if(li[i-1][j-1]==10){
li[i][j]++;
}
if(li[i-1][j]==10){
li[i][j]++;
}
if(li[i-1][j+1]==10){
li[i][j]++;
}
if(li[i][j-1]==10){
li[i][j]++;
}
if(li[i][j+1]==10){
li[i][j]++;
}
if(li[i+1][j-1]==10){
li[i][j]++;
}
if(li[i+1][j]==10){
li[i][j]++;
}
if(li[i+1][j+1]==10){
li[i][j]++;
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(li[i][j]==10){
cout<<'*';
}else{
cout<<li[i][j];
}
}
cout<<endl;
}
return 0;
}