还是DFS。。。。真好用的呢。。开这么大的规模的数组时间都不超过150MS。。。。。125MS过。可以剪枝的吗,觉得找不到剪枝的地方的呢。
#include<iostream>
using namespace std;
#define max 1001
char map[max][max];
int  visited[max][max];
int add[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
int col,row,max_size,count;

void DFS(int i,int j)
int k;
  visited[i][j]
=1;
  
for(k=0;k<4;k++){
    
if(!visited[i+add[k][0]][j+add[k][1]]&&map[i+add[k][0]][j+add[k][1]]=='*'){
        count
++;
        DFS(i
+add[k][0],j+add[k][1]);
        }
     }
}

int main()
int i,j;
  
while(scanf("%d%d",&col,&row)!=EOF&&row&&col){
  max_size
=0;
  
for(i=1;i<=row;i++)
    
for(j=1;j<=col;j++){
      cin
>>map[i][j];
      visited[i][j]
=0;
    }
  
for(i=1;i<=row;i++)
    
for(j=1;j<=col;j++){
      
if(map[i][j]=='*'&&visited[i][j]==0){
         count
=1;
         DFS(i,j);
         
//printf("count==%d\n",count);
         if(max_size<count) 
            max_size
=count;
        }
    }
  printf(
"%d\n",max_size);
   }
  
return 0;
}

在家里的最后一道题的了,很简单的一道题的呢,对DFS有比较初步的理解的了,砾哥说还有维护一个栈的DFS写法。。回学校了再研究的吧。
回学校了开始入门BFS,一样一样来的嘛,不着急。。
PS:这个农场可够大的。。。。。