求助为什么最后一个点会REQWQ
查看原帖
求助为什么最后一个点会REQWQ
394197
2pow10楼主2023/10/7 12:38
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 10100;
int n,num;
int pan[N*N];
char shu='1';
char g[N][N];
int dx[4]= {-1,0,1,0};
int dy[4]= {0,-1,0,1};
void check(int a,int b) {
	g[a][b] = shu;
	for(int i=0; i<4; i++) {
		int x=a+dx[i];
		int y=b+dy[i];
		if (x < 1 || x > n || y < 1 || y > n) continue;
		if(g[x][y]=='#') check(x,y);
	}
}
signed main() {
/*	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);*/
	cin >> n;
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=n; j++) {
			cin >> g[i][j];
		}
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=n; j++) {

			if(g[i][j]=='#') {
				check(i,j);
				shu++;
			}
		}
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=n; j++) {
			if(g[i][j]!='.'&&g[i][j]!='@') {
				if(g[i][j+1]=='.'||g[i][j-1]=='.'||g[i+1][j]=='.'||g[i-1][j]=='.') g[i][j] = '@';
			}
		}
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=n; j++) {
			if(g[i][j]!='.' && g[i][j]!='@' && !pan[ g[i][j]-'0' ]) {
				num++;
				pan[g[i][j]-'0'] = 1;
			}
		}
	}
	cout << shu-'0'-num-1;
	return 0;
}
2023/10/7 12:38
加载中...