八连通是什么啊?大佬帮忙改一下(谢
查看原帖
八连通是什么啊?大佬帮忙改一下(谢
891845
liuhaopeng666楼主2023/9/26 21:40
#include<bits/stdc++.h>
using namespace std;
int u[1000][1000];
int v[1000][1000];
int main(){
	int x,y;
	cin>>x>>y;
	int kong=0;
	int shu=0;
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			cin>>u[i][j];
		}
	}
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			if(u[i][j]==0&&u[i+1][j]==0&&u[i][j+1]==0&&u[i-1][j]==0&&u[i][j-1]==0&&u[i+1][j+1]==0&&u[i+1][j-1]==0&&u[i-1][j+1]==0&&u[i-1][j-1]==0){
				v[i][j]=1;
				//cout<<"1";
			}else if(u[i][j]==0&&u[i+1][j]==1||u[i][j+1]==1||u[i-1][j]==1||u[i][j-1]==1||u[i+1][j+1]==1||u[i+1][j-1]==1||u[i-1][j+1]==1||u[i-1][j-1]==1){
				v[i][j]=2;
			//	cout<<"1";
			}
			//cout<<"1";
		}
	}
//	cout<<"1";
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			cout<<v[i][j];
		}
		cout<<endl;
	}
	for(int i=2;i<x;i++){
		for(int j=2;j<y;j++){
			if(v[i][j]==1&&v[i+1][j]==1&&v[i][j+1]==1&&v[i-1][j]==1&&v[i][j-1]==1&&v[i+1][j+1]==1&&v[i+1][j-1]==1&&v[i-1][j+1]==1&&v[i-1][j-1]==1){
				kong++;
			}else if(v[i][j]==2&&v[i+1][j]!=1&&v[i][j+1]!=1&&v[i-1][j]!=1&&v[i][j-1]!=1&&v[i+1][j+1]!=1&&v[i+1][j-1]!=1&&v[i-1][j+1]!=1&&v[i-1][j-1]!=1){
				shu++;
			}
		}
	}
	cout<<shu+kong;
	return 0;
} 
2023/9/26 21:40
加载中...