#23743: 為甚麼會過不了測資三呢?


es811066 (ZIhan)


#include<bits/stdc++.h>

using namespace std;

long long int mx,mn,num;

char s[1000][1000];

bool o[1000][1000]={{0}};

int a,b;

long long int z;

void f(int x,int y){

if(o[x][y]==1){

return;

}

z++;

 

o[x][y]=1;

if(o[x+1][y]==0&&s[x+1][y]=='W'&&x<a-1)f(x+1,y);

if(o[x-1][y]==0&&s[x-1][y]=='W'&&x>0)f(x-1,y);

if(o[x][y-1]==0&&s[x][y-1]=='W'&&y>0)f(x,y-1);

if(o[x][y+1]==0&&s[x][y+1]=='W'&&y<b-1)f(x,y+1);

else return;

 

//o[x][y]=0;

}

int main(){

cin>>a>>b;

for(int i=0;i<a;i++){

for(int j=0;j<b;j++){

cin>>s[i][j];

}

}

mx=0;

mn=1000;

num=0;

for(int i=0;i<a;i++){

for(int j=0;j<b;j++){

if(s[i][j]=='W'&&o[i][j]==0){

z=0;

f(i,j);

num++;

mx=max(mx,z);

mn=min(mn,z);

}

}

}

cout<<mx<<" "<<mn<<" "<<num<<endl;

 

}

#23744: Re:為甚麼會過不了測資三呢?


asnewchien@gmail.com (david)


mn 有可能沒變動。

#23745: Re:為甚麼會過不了測資三呢?


yes51851823@gmail.com (wseds)


mn 有可能沒變動。


我的做法和他相同,但是我的最小值初始為2147483647也是卡第三測資點@@

#23746: Re:為甚麼會過不了測資三呢?


DE45A (一葉之秋)


#include<bits/stdc++.h>

using namespace std;

long long int mx,mn,num;

char s[1000][1000];

bool o[1000][1000]={{0}};

int a,b;

long long int z;

void f(int x,int y){

if(o[x][y]==1){

return;

}

z++;

 

o[x][y]=1;

if(o[x+1][y]==0&&s[x+1][y]=='W'&&x<a-1)f(x+1,y);

if(o[x-1][y]==0&&s[x-1][y]=='W'&&x>0)f(x-1,y);

if(o[x][y-1]==0&&s[x][y-1]=='W'&&y>0)f(x,y-1);

if(o[x][y+1]==0&&s[x][y+1]=='W'&&y<b-1)f(x,y+1);

else return;

 

//o[x][y]=0;

}

int main(){

cin>>a>>b;

for(int i=0;i<a;i++){

for(int j=0;j<b;j++){

cin>>s[i][j];

}

}

mx=0;

mn=1000;

num=0;

for(int i=0;i<a;i++){

for(int j=0;j<b;j++){

if(s[i][j]=='W'&&o[i][j]==0){

z=0;

f(i,j);

num++;

mx=max(mx,z);

mn=min(mn,z);

}

}

}

cout<<mx<<" "<<mn<<" "<<num<<endl;

 

}


測資三沒水漥