老师的做法 VS 我的做法
查看原帖
老师的做法 VS 我的做法
552018
Andrews123楼主2023/12/30 14:12

老师的做法难度很大,看不懂

#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;
}
2023/12/30 14:12
加载中...