求助(必关)
  • 板块P1767 家族
  • 楼主Danny_chan
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/2/26 19:23
  • 上次更新2024/2/26 21:30:25
查看原帖
求助(必关)
1032960
Danny_chan楼主2024/2/26 19:23

40分,#1 3 4 5 7 9 wa。请各位大佬帮忙看一下哪里错了,十分感谢。 代码:

#include<iostream>
using namespace std;
int n;
string s;
char a[1010][1010];
bool f[1010][1010];
int sum=0,line=1;
int maxx=-1e9;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int l;
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int x1=x+dx[i];
		int y1=y+dy[i];
		if(x1<=0||x1>n||y1<=0||y1>maxx) continue;
		if(a[x1][y1]<'a'||a[x1][y1]>'z') continue;
		if(f[x1][y1]==true) continue;
		f[x1][y1]=true;
		dfs(x1,y1);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		getline(cin,s);
		l=s.size(); 
		for(int i=0;i<s.size();i++){
			if(s[i]==' ') s[i]='*';
			a[line][i]=s[i];
		}
		maxx=max(maxx,l);
		line++;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=maxx;j++){
			if(a[i][j]>='a'&&a[i][j]<='z'&&f[i][j]==false){
				dfs(i,j);
				sum++;
			}
		}
	}
	cout<<sum;
	return 0;
}
2024/2/26 19:23
加载中...