ECNU2848(dfs)

View Code
 1 #include<stdio.h>

 2 #include<string.h>

 3 const int dx[]={0,0,1,-1};

 4 const int dy[]={1,-1,0,0};//走的方向

 5 char map[1005][100];

 6 int max,hang,lie;

 7 int fmax(int p,int q)

 8 {

 9 if(p>q)

10 return p;

11 else

12 return q;

13 }

14 int dfs(int i,int j)

15 {

16 int ddx,ddy,k,tp;

17 map[i][j]='.';

18 tp=1;

19 for(k=0;k<4;k++)

20 {

21 ddx=i+dx[k];

22 ddy=j+dy[k];

23 if(map[ddx][ddy]=='*')

24 {

25 tp=tp+dfs(ddx,ddy);

26 }

27 }

28 return tp;

29 }

30 int main()

31 {

32 int i,j;

33 while(scanf("%d%d",&lie,&hang)==2)

34 {

35 getchar();

36 memset(map,'.',sizeof(map));//初始化该地图

37 for(i=1;i<=hang;i++)

38 {

39 for(j=1;j<=lie;j++)

40 scanf("%c",&map[i][j]);

41 getchar();

42 }

43 max=0;

44 for(i=1;i<=hang;i++)

45 for(j=1;j<=lie;j++)

46 {

47 if(map[i][j]=='*')

48 max=fmax(max,dfs(i,j));

49 }

50 printf("%d\n",max);

51 }

52 return 0;

53 }

 

  

你可能感兴趣的:(DFS)