posts - 195,  comments - 30,  trackbacks - 0

 

#include<iostream>
#include
<cstdlib>
using namespace std;
int MATRIX[100][100];
int fx[8]={0,0,1,-1,1,1,-1,-1},fy[8]={1,-1,0,0,-1,1,-1,1};
int row,col;
  
int ISALL()
  {
      
int i,j,mark=1;
      
for(i=0;i<row;i++)
       {
       
for(j=0;j<col;j++)
       {
           
if(MATRIX[i][j]==1)
             mark
=0;              
       }
       }
       
return mark;
  }
  
int  check(int i,int j,int k)
  {
      
int f=1;
      
if((i<0||i>=row)||(j<0||j>=col))
       f
=0;
      
return f;
  }
  
void dfs(int i,int j)
  {
       
int newx,newy;
       
for(int k=0;k<8;k++)
       {
         newx
=i+fx[k];
         newy
=j+fy[k];      
         
if(check(newx,newy,k)==1&&MATRIX[newx][newy]==1)
         {
             MATRIX[newx][newy]
=-1;                                            
             dfs(newx,newy);              
         }              
       }
  }
  
int main()
  {
  freopen(
"s.txt","r",stdin);
  freopen(
"key.txt","w",stdout);
  
int flag,times;
  
int i,j;
  
char m;
  cin
>>row>>col;
  
while(row!=0)
  {
    memset(MATRIX,
0,sizeof(MATRIX));           
    
for(i=0;i<row;i++)
    
for(j=0;j<col;j++)
    {
      cin
>>m;
      
if(m=='@')MATRIX[i][j]=1;//ÓÃ1±íʾ@ ,0±íʾ*,·ÃÎÊÖ®ºó¸ÄΪ-1               
    } 
    flag
=times=0;
    
for(i=0;i<row&&flag==0;i++)
    
for(j=0;j<col&&flag==0;j++)
    {
        
if(MATRIX[i][j]==1)
        {
          MATRIX[i][j]
=-1;                 
          dfs(i,j);
          times
++;
         
if(ISALL()==1)flag=1;   
         }
                    
    }  
    cout
<<times<<endl;        
    cin
>>row>>col;           
  }

  
//system("PAUSE");
  return   0;
  }
posted on 2009-05-14 21:21 luis 阅读(203) 评论(0)  编辑 收藏 引用 所属分类: 搜索

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜