输入:首先输入两个数 行 列 之后输入座位情况,坐了为1,没坐为0;
输出:小组数量 最大小组人数
#include <iostream>
#include <vector>
using namespace std;
/* 查询函数 */
void ff(vector<vector<int> >&zzz,int x,int y,int&tmp)
{
if(0==zzz[x][y])
return;
else
{
zzz[x][y]=0;
++tmp;
}
int row=zzz.size();
int col=zzz[0].size();
if(x>0&&y>0)
ff(zzz,x-1,y-1,tmp);
if(x>0)
ff(zzz,x-1,y,tmp);
if(x>0&&y<col-1)
ff(zzz,x-1,y+1,tmp);
if(y>0)
ff(zzz,x,y-1,tmp);
if(y<col-1)
ff(zzz,x,y+1,tmp);
if(x<row-1&&y>0)
ff(zzz,x+1,y-1,tmp);
if(x<row-1)
ff(zzz,x+1,y,tmp);
if(x<row-1&&y<col-1)
ff(zzz,x+1,y+1,tmp);
return;
}
int main()
{
int row=0;
int col=0;
cin>>row>>col;
vector<vector<int> >zzz(row,vector<int>(col,0));
for(int i=0;i<row;++i)
for(int j=0;j<col;++j)
cin>>zzz[i][j];
int cnt=0;
int max=0;
int tmp=0;
for(int i=0;i<row;++i)
for(int j=0;j<col;++j)
{
if(1==zzz[i][j])
{
++cnt;
ff(zzz,i,j,tmp);
if(max<tmp)
max=tmp;
tmp=0;
}
else
continue;
}
cout<<cnt<<" "<<max;
return 0;
}
例如 输入
3 3
1 1 1
0 0 0
1 0 1
输出 3 3