社区讨论

八连通是什么啊?大佬帮忙改一下(谢

P4961小埋与扫雷参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo1a1go5
此快照首次捕获于
2023/10/22 17:39
2 年前
此快照最后确认于
2023/11/02 17:57
2 年前
查看原帖
C
#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;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...